解题思路
利用字典或者哈希表分别存储值和下标,将target分解成
nums[i]+(target-nums[i])
如此一来,就可以一次遍历就可以找到结果
代码
(PYTHON)
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
dic = {}
for i,num in enumerate(nums):
if target - num in dic:
return [i,dic[target - num]]
dic[num] = i
(JAVA)
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] ans = new int[2];
HashMap<Integer,Integer> map = new HashMap<>();
for(int i = 0;i<nums.length;i++){
if(map.containsKey(target-nums[i])){
ans[0] = i;
ans[1] = map.get(target-nums[i]);
break;
}
map.put(nums[i],i);
}
return ans;
}
}