给定一个整数nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
可以假设每种输入只会对应一个答案。但是,不能重复利用这个数组中同样的元素。
题解
提交代码
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++) {
if(map.containsKey(target - nums[i])) {
return new int[] {map.get(target - nums[i]), i};
}
map.put(nums[i],i);
}
throw new IllegalArgumentException("No two sum solution");
}
}
本题最简易方法:暴力法
- 循环遍历两次,对于每个元素x遍历整个数组,判断是否存在target-x。
提交代码的思路:是用HashMap存储每个元素,每次存入元素的同时,判断是否存在target-x。
- 两个方法不同之处是用空间换时间。
- 熟悉了HashMap。
- Map的containsKey(key)是否存在这个Key值
- Map的get(key)获取key对应的value