AcWing 75. 和为S的两个数字

题目描述

输入一个数组和一个数字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;
    }
};

猜你喜欢

转载自blog.csdn.net/mengyujia1234/article/details/90109026