输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
#include <iostream>
#include <vector>
using namespace std;
class Solution
{
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum)
{
vector<int> res;
if (array.size() == 0)
return res;
int length = array.size();
int low = 0;
int high = length - 1;
int putLow = low;
int putHigh = high;
int multi = 0x7fffffff;
bool find = false;
while (low < high)
{
long long curSum = array[low] + array[high];
if (curSum == sum)
{
find = true;
if (array[low]*array[high] < multi)
{
multi = array[low]*array[high];
putLow = low;
putHigh = high;
}
high--;
}
else if (curSum < sum)
low++;
else
high--;
}
if(find == true)
{
res.push_back(array[putLow]);
res.push_back(array[putHigh]);
}
return res;
}
};