//输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 //还是双指针,开始让两个指针分别指向数组的头和尾。
//如果两个指针所指的数之和小于sum,头指针后移;
//如果两个指针所指的数之和大于sum,尾指针前移;(因为是递增数组,从两头往中间查找的第一对数字即是乘积最小的一对)
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
int n=array.size();
vector<int> res;
int begin=0;
int end=n-1;
while(begin<end){
if(array[begin]+array[end]==sum){
res.push_back(array[begin]);
res.push_back(array[end]);
break;//及时跳出循环(当找到满足条件的一对数就跳出)
}
else if(array[begin]+array[end]<sum)
begin++;
else end--;
}
return res;
}
};