class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
//vector<int> temp;
vector<int> result;
int len = array.size();
int i = 0,j = 0;
for(i = 0,j = len - 1;i < len && j > i;)
{
if(array[i] + array[j] == sum)
{
result.push_back(array[i]);
result.push_back(array[j]);
return result;
}
else if(array[i] + array[j] > sum)
j--;
else
i++;
}
return result;
}
};
思路:这道题有时候容易钻牛角尖,我本来想的是另外一种方法,结果被卡在题目里面了,钻不出来。 其实虽然有一个乘积最小的限制,但是题目要求是排过序的,还是递增排序,所以头尾相加是最快的方法,第一组遇到的和sum相等的值就一定是乘积最小的(和相同,差越大,乘积就越小),大了就大值往前移动,小了就小值往后移动,一定要注意在中间有一个return,不然就会把所有和为sum的值打印出来。