思路:用一个map存放 已遍历过的元素和下标;
若当前元素是nums[i], 且该元素的另一半 target-nums[i] 在已遍历过的map里面,则返回两个元素的下标;
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] ans = new int[2];
//存放已经遍历过的元素和下标
HashMap<Integer,Integer> map = new HashMap();
//这里不能先填充完一整个数组到map里面,再去做判断
for(int i=0;i<nums.length;i++){
int temp = target-nums[i];
if(map.containsKey(temp)){
ans[0]=i;
ans[1]=map.get(temp);
return ans;
}
//存放已经遍历过的元素和下标,作为基本被拿去判断的时候用
map.put(nums[i],i);
}
return null;
}
}