还莫有轮到我,上帝保佑我 (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() &#61;&#61; 0) {return result;}int nright &#61; array.size() - 1;int nleft &#61; 0; vector<int> minSub(sum / 2 , 1);while (nleft < nright) {if (array[nleft] &#43; array[nright] &#61;&#61; sum) {result.push_back(array[nleft]);result.push_back(array[nright]);tempresult.push_back(result);result.clear();nleft&#43;&#43;;nright--;} else if (array[nleft] &#43; array[nright] > sum) {nright--;}else {nleft&#43;&#43;;}}if(tempresult.empty()) {return result;}return tempresult[0];}
};