和41题类似,但是更简单一些,直接双指针法就可以。
要求返回乘积最小的一组,其实就是第一组,因为和一定时,两数相差越大积越小;
或者可以在所有结果找完之后,for循环找乘积最小的一组。
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
vector<int> result;
if(array.size()<2) return result;
int left = 0;
int right = array.size()-1;
while(left <= right){
int cursum = array[left] + array[right];
if(cursum==sum){
result.push_back(array[left]);
result.push_back(array[right]);
break;
}
else if(cursum<sum){
left += 1;
}
else{
right -= 1;
}
}
return result;
}
};