题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出。
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
int length = array.size();
int end = length -1;
int start = 0;
vector<int> result;
int min;
while(end > start){
if(array[end] + array[start] == sum){
if(result.empty()){
result.push_back(array[start]);
result.push_back(array[end]);
min = array[end] * array[start];
}
else{
int multiResult = array[end] * array[start];
if(multiResult < min){
result.pop_back();
result.pop_back();
result.push_back(array[start]);
result.push_back(array[end]);
min = multiResult;
}
}
end --;
start ++;
}else if((array[end] + array[start]) > sum)
end --;
else
start ++;
}
return result;
}
};