思路:
把这个数组想象成一群人,其中只能有2个有缘的人结婚 。建一个空的hash表,然后遍历数组,在hash表中找出另一个有缘人。找的过程中,如果另一个人不是有缘人(**另一个有缘人****target-nums[i]**不在hash表)就把该数添加到hash表,重复此过程,直到找到有缘人。
时间复杂度为O(n),最坏的情况也仅仅需要遍历数组一次
java
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer>storeNums=new HashMap<>();
int[] result=new int[2];
for(int i=0; i<nums.length; i++){
int another=target-nums[i];
Integer anotherIndex=storeNums.get(another);
if(anotherIndex!=null){
result[0]=anotherIndex;
result[1]=i;
break;
}else storeNums.put(nums[i], i);
}
return result;
}
}