Two Sum–Leetcode
思路
依次遍历数组,并且利用map记录已经访问过的number,查看target - 当前number是否存在
存在:返回
不存在:把当前number加入map里面去。
时间复杂度
O(n)
class Solution {
public int[] twoSum(int[] nums, int target) {
//利用map,记录已经访问过的number的值和index
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
for( int i = 0;i < nums.length;i++ ){
//当前number
int currentNumber = nums[i];
//需要查看这个number是否在map里存在了
int secondNumber = target-currentNumber;
if (map.containsKey(secondNumber)){
//如果找到了,就返回
return new int[]{map.get(secondNumber),i} ;
}else{
//如果没有找到
map.put(currentNumber,i);
}
}
return null;
}
}