问题描述:01两数之和
代码:
class Solution{
private:
unordered_map<int,int> res;
public:
vector<int>twoSum(vector<int>&nums,int target){
int num=nums.size();
for(int i=0;i<num;++i){
auto it=res.find(-nums[i]+target);
if(it!=res.end()){
return {it->second,i};
}
res.insert(make_pair(nums[i],i));
}
return {};
}
};
思路:
哈希表
我们遍历到某个数时,用 targe减去这个数,就会得到另一个数,若另一个数存在于哈希表中,直接返回结果了。若target-遍历到的数不存在,就将遍历的数存入哈希表,让后续遍历的数字使用。