题解 | #和为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过程
