题目
解法
1.暴力破解
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<=nums.length;j++){
if(nums[i]+nums[j]==target){
return new int[] {i,j} ;
}
}
}
return null;
2.哈希表存取
思想:空间换时间
i指针指向本位,j指针指向下一位,如果target-nums[i]的值没有在哈希表,就把本位及其i存入哈希表,如果有就取出
因为要返回的是下标,所以哈希表中应该是{nums[i],i}
Map<Integer,Integer> hash=new HashMap<Integer,Integer>();
for(int i=0;i<nums.length;++i){
if(hash.containsKey(target-nums[i])){
return new int[]{i,hash.get(target-nums[i])};
}
hash.put(nums[i],i);
}
return new int[0];