題目
【輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,使得他們的和正好是S,如果有多對數字的和等於S,讓輸出的兩個數的乘積是最小的】
1、分析
用兩個指針分別指向數組的第一個元素和最後一個元素,若兩數的和大於s ,則尾指針前移;若兩數的和小於s,則頭指針後移。
2、代碼
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
vector<int> res;
if(array.size()<2)
return res;
vector<int>::iterator ahead=array.begin();
vector<int>::iterator behind=array.end()-1;
while(ahead<behind)
{
if(*ahead+*behind==sum)
{
res.push_back(*ahead);
res.push_back(*behind);
break;
}
if(*ahead+*behind<sum)
++ahead;
if(*ahead+*behind>sum)
--behind;
}
return res;
}
};