题目
输入一个数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。
如果有多对数字的和等于s,输出任意一对即可。
你可以认为每组输入中都至少含有一组满足条件的输出。
样例
输入:[1,2,3,4] , sum=7
输出:[3,4]

解法:哈希

时间复杂度O(n),空间复杂度O(1)

  1. class Solution {
  2. public:
  3. vector<int> findNumbersWithSum(vector<int>& nums, int target) {
  4. vector<int> ans;
  5. unordered_map<int, int> h;
  6. for (auto x: nums) {
  7. if (h[target - x] > 0) {
  8. ans.push_back(target - x);
  9. ans.push_back(x);
  10. return ans;
  11. }
  12. else {
  13. h[x]++;
  14. }
  15. }
  16. return ans;
  17. }
  18. };