解题思路
把数组元素做一次hash表转换,然后通过减法减数组元素后的结果可以直接通过hash来获取。
代码
class Solution {
public int[] twoSum(int[] nums, int target) {
if(nums.length == 0){
return null;
}
// 数组转hashmap, key为num中的值, value为下标位置, 在target减nums中比自己小的元素时,剩下的值可以直接通过hash key来查找。
Map<Integer,Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++){
map.put(nums[i], i);
}
for(int i = 0; i < nums.length; i++){
if(map.get(target-nums[i]) != null && map.get(target-nums[i]) != i){
int[] result = new int[2];
result[0] = i;
result[1] = map.get(target-nums[i]);
return result;
}
}
return null;
}
}