题目描述
输入一个数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。
如果有多对数字的和等于s,输出任意一对即可。
你可以认为每组输入中都至少含有一组满足条件的输出。
样例
输入:[1,2,3,4] , sum=7
输出:[3,4]
问题分析
从nums数组起始点开始,检查target减去当前数的差是否在哈希表中,如果在就说明已经找到了,返回结果即可;如果不在则将当前数与下标存入哈希表,以此循环,直到找到答案为止。
代码实现
class Solution {
public:
vector<int> findNumbersWithSum(vector<int>& nums, int target) {
vector<int> res;
unordered_map<int, int> umap;
for(int i = 0; i < nums.size(); i++){
if(umap.count(target - nums[i]) == 0)
umap[nums[i]] = i;
else{
res.push_back(target - nums[i]);
res.push_back(nums[i]);
return res;
}
}
return res;
}
};