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