题解 | #和为S的两个数字#

和为S的两个数字

https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b

#include <algorithm>
#include <vector>
class Solution {
public:
    vector<int> FindNumbersWithSum(vector<int> array,int sum) {
        if(array.empty()) return vector<int>{};// 解决空数组情况
        int l = 0, r = 0;
        for(int j = 0; j < array.size(); ++j)
        {
            if(find(array.begin()+j, array.end(), sum - array[j]) != array.end())
            {
                l = array[j];
                r = *(find(array.begin()+j, array.end(), sum - array[j]));
                if(l != r)// 目的获取满足条件的第一组
                    break;
            }
        }
        if(l!=r){//两个值都不一样,直接返回即可
            return vector<int>{l, r};
        }else if(count(array.begin(), array.end(), r) > 1){// 对于相等值情况,注意两种情形一个是元素的确存在两个同值的;另外,r,l访问到非初始化区域,此时会初始化为0,这时需要剔除
            return vector<int>{l, r};
        }
        else {
            return vector<int>{};// 没找到,返回空即可
        }
    }
};

挤挤刷刷! 文章被收录于专栏

记录coding过程

全部评论

相关推荐

喜欢走神的螺狮粉离上岸不远了:我也是投广州深圳的啊,一起加油!
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务