还莫有轮到我,上帝保佑我 (0.0)
描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,返回两个数的乘积最小的,如果无法找出这样的数字,返回一个空数组即可。
返回值描述:
对应每个测试案例,输出两个数,小的先输出。
示例1
输入:
[1,2,4,7,11,15],15
返回值:
[4,11]
注意: 求乘积最小的,就是求最外层,和相同,最外层乘积最小,别被迷惑了,双指针夹逼
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
vector<vector<int>> tempresult;
vector<int> result;
if (array.size() == 0) {
return result;
}
int nright = array.size() - 1;
int nleft = 0;
vector<int> minSub(sum / 2 , 1);
while (nleft < nright) {
if (array[nleft] + array[nright] == sum) {
result.push_back(array[nleft]);
result.push_back(array[nright]);
tempresult.push_back(result);
result.clear();
nleft++;
nright--;
}
else if (array[nleft] + array[nright] > sum) {
nright--;
}
else {
nleft++;
}
}
if(tempresult.empty()) {
return result;
}
return tempresult[0];
}
};