给定一个数组和一个目标和,从数组中找两个数字相加等于目标和,输出这两个数字的下标。
题解:
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map=new HashMap<>();
for(int i=0;i<nums.length;i++){
int sub=target-nums[i];
if(map.containsKey(sub)){
return new int[]{i,map.get(sub)};
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
思路:new一个哈希表,一次for遍历,每个元素先判断表中有无和他组成等于目标值的元素,没有就把它放进表里。
时间复杂度:O(n) 空间:O(n)
注意:HashMap<>()的括号、map.put(nums[i], i)的i、new int[]{i,map.get(sub)}的{} 、IllegalArgumentException大写I
本文来自凡蜕博客(https://blog.ysboke.cn), 转载请带上地址.。