75. 和为S的两个数字

Posted 创造型快乐or享受型

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了75. 和为S的两个数字相关的知识,希望对你有一定的参考价值。

 

 

暴力求解:双重for循环

class Solution {
public:
    vector<int> findNumbersWithSum(vector<int>& nums, int target) {
        int n= nums.size();
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(nums[i] + nums[j] == target)
                    return vector<int> {nums[i],nums[j]};
            }
        }
        
    }
};

 

方法2:用unordered_set<>()

 

C++ unordered_set定义及初始化详解

unordered_set<T> 容器类型的模板定义在 unordered_set 头文件中。unordered_set<T> 容器提供了和 unordered_map<T> 相似的能力,但 unordered_set<T> 可以用保存的元素作为它们自己的键。T 类型的对象在容器中的位置由它们的哈希值决定,因而需要定义一个 Hash<T> 函数。

这种容器不能存放重复的元素。

unordered_set用法

 

 

代码

class Solution {
public:
    vector<int> findNumbersWithSum(vector<int>& nums, int target) {
        unordered_set<int> hash;
        int n= nums.size();
        for(int i=0;i<n;i++)
        {
            if(hash.count(target-nums[i]))//返回target-nums[i]的个数,即判断target-nums[i]是不是存在
                return vector<int> {nums[i],target-nums[i]};
            //维护hash表
            hash.insert(nums[i]);//每次判断完,将数加到hash表里。
        }
        
    }
};

 

 

牛客网上的

 

 

 

以上是关于75. 和为S的两个数字的主要内容,如果未能解决你的问题,请参考以下文章

编程算法 - 和为s的两个数字 代码(C)

最强解析面试题:和为S的两个数字

和为s的两个数字

[剑指offer]面试题41:和为s的两个数字VS和为s的连续正数序列

剑指offer 42.和为S的两个数字

[算法]和为S的两个数字