题目描述:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
Java代码:
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; ++i) {
int x = target - nums[i];
if(hashMap.containsKey(x)) {
return new int[] { hashMap.get(x), i };
}
hashMap.put(nums[i], i);
}
return new int[0];
}
}
这道题利用哈希表可以将复杂度降下来,无论是C还是Java或者Python。
这里Java中的HashMap存储每个数和其对应的位置,顺序遍历,每次只要判断在哈希表中有没有存在一个数等于目标数减当前数即可。