给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
来源:力扣(LeetCode)
例如:输入:nums = [3,2,4], target = 6 输出:[1,2]
思路:使用求差法,遍历数组,与target求差,不存在存入map,存在返回map的数组下标和当前元素下标。
class Solution {
public int[] twoSum(int[] nums, int target) {
//存储(元素,下标)
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i=0;i<nums.length;i++){
//map存在target与当前数之差,返回map中下标和当前下标的数组
if(map.containsKey(target-nums[i])){
return new int[]{ map.get(target-nums[i]), i };
}
map.put(nums[i],i);
}
return new int[0];
}
}