題目描述
輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。
分析:
完整代碼:
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
// 聲明一個容器變量
vector<int> data;
//檢查輸入的合法性
if(array.empty())
return data;
//聲明一個變量,表示數組的長度
int length = array.size();
//聲明兩個變量,表示左邊遊標和右邊遊標
int ahead = 0;
int behind = length - 1;
//聲明一個變量,用來表示兩個數字的和
int CurrSum = 0;
//當兩個遊標的沒有相遇
while(behind > ahead)
{
CurrSum = array[ahead] + array[behind];
//如果 CurrSum 等於 sum
if(CurrSum == sum)
{
//取出兩個數
data.push_back(array[ahead]);
data.push_back(array[behind]);
return data;
break;
}
else if(CurrSum > sum)//如果 CurrSum 大於 sum
behind--;
else//如果 CurrSum 小於 sum
ahead++;
}
//返回最中的結果
return data;
}
};