题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出。
思路:双指针,一个在首i,一个在尾j。判断两个数的和sum,如果大于s,那么肯定让j–;如果小于s,肯定让i++。
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> data,int sum) {
vector<int> result;
int len = data.size();
int i=0,j=len-1;
while(i<j)
{
int sumt=data[i]+data[j];
if(sumt>sum)
j--;
else if(sumt<sum)
i++;
else
{
result.push_back(data[i]);
result.push_back(data[j]);
return result;
}
}
return result;
}
};