极简算法刷题 - 1.两数之和

极简算法刷题 - 1.两数之和_第1张图片

上来直接写了暴力分析
    /**
     * 直接遍历
     */
    public int[] twoSum(int[] nums, int target) {
     
        for (int left = 0; left < nums.length - 1; left++) {
     
            for (int right = left + 1; right < nums.length; right++) {
     
                if (nums[left] + nums[right] == target) {
     
                    return new int[]{
     left, right};
                }
            }
        }
        return null;
    }
查看题解后,自己写一遍hash表解法
    /**
     * hash表
     */
    public int[] twoSum2(int[] nums, int target) {
     
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
     
            int tmp = target - nums[i];
            if (map.containsKey(tmp))
                return new int[]{
     i, map.get(tmp)};
            map.put(nums[i], i);
        }
        return null;
    }

你可能感兴趣的:(LeetCode刷题,算法)