力扣刷题(1)---两数相加

题目:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

暴力枚举

 public static int[] twoSum(int [] nums, int target){
        int n = nums.length;
        for (int i = 0; i < n; ++i){
            for (int j = i + 1; j < n; ++j){
                if (nums[i] + nums[j] == target){
                    return new int[]{i,j};
                }
            }
        }
        return new int[0];//返回空矩阵
    }

  注意:j的循环永远跑在i的后一位。

哈希表

 public static int[] twoSumHash(int [] nums, int target){
        HashMap<Integer, Integer> hashMap = new HashMap<>();
        for (int i = 0; i < nums.length; ++i) {
            if (hashMap.containsKey(target - nums[i])){
                return new int[] {hashMap.get(target - nums[i]), i};
            }
            hashMap.put(nums[i],i);
        }
        return new int[0];
    }

  注意:nums[i] ==> key;  i ==> value; 利用hashMap.containsKey(key) 和hashMap.get(key) 的组合解题。

posted @ 2022-12-12 21:47  Jonkidi  阅读(26)  评论(0)    收藏  举报