题目:
输入: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) 的组合解题。
标签:---,return,hashMap,nums,int,力扣,new,两数,target From: https://www.cnblogs.com/Jonkidi/p/16977132.html