class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> i2imap;
vector<int> res;
int sz=nums.size();
for(int i=0; i<sz; i++){
int diff=target-nums[i];
auto it = i2imap.find(diff);
if(it!=i2imap.end()){
res.push_back(i);
res.push_back(it->second);
return res;
}
else
i2imap[nums[i]]=i;
}
return res;
}
};
使用unordered_map来存放历史数据,扫描当前数据时,如果在历史数据中能找到和为目标值的另一半,则为一组答案