给定一个整数数组,找出其中两个数满足相加等于你指定的目标数字。
用map记录已出现的数字,判断target-nums[i]是否已存在。
Python
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
m = {}
for i in range(len(nums)):
if target - nums[i] in m:
return [m[target - nums[i]], i]
m[nums[i]] = i
C++
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> m;
vector<int> res;
for (int i = 0; i < nums.size(); i++) {
int tmp = target - nums[i];
if (m.find(tmp) != m.end()) {
res.push_back(m[tmp]);
res.push_back(i);
return res;
}
m[nums[i]] = i;
}
}
};