一、思路
经典两数之和。
最笨重的双for循环暴力法就不写了,写一下哈希。
建立一个哈希表,每次查询target与当前值的差值在不在表中,如果在,则说明有两个数的和等于target。 如果不在表中,就将当前值放到哈希表中,并记录一下他的位置。
二、代码
1.python
代码如下:
class Solution:
def twoSum(self, nums, target):
dic = {}
n = len(nums)
for i in range(n):
if target - nums[i] in dic.keys():
return [dic[target - nums[i]],i]
else:
dic[nums[i]] = i
return []
2.C++
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int,int> m;
vector<int> res;
for(int i=0;i<nums.size();i++){
if(m.find(target-nums[i]) != m.end()){
res.push_back(m[target-nums[i]]);
res.push_back(i);
return res;
}
m[nums[i]] = i;
}
return {};
}
};