思路
使用哈希表,将数组中元素都放到一个hashmap中,然后遍历哈希表确定target-nums[i]是否也在表中【注意:存在的情况下要将自身使用2次的情况去掉】
复杂度分析
时间复杂度O(n), 空间复杂度O(n)
代码
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
int[] res = new int[2];
if(nums.length == 0)
return res;
for(int i=0;i<nums.length;i++){
map.put(nums[i],i);
}
for(int i=0;i<nums.length;i++){
if(map.containsKey(target-nums[i])){
int index = map.get(target-nums[i]);
if(i != index){
res[0] = i;
res[1] = index;
break;
}
}
}
return res;
}
}