タイトル説明
インクリメント入力とデジタルソートされた配列のSは、アレイ内の2つの数値を見つけ、それらが正確であることS、および複数桁の数字は、S、両者の最小数の出力の積に等しい場合。
思考
我々は、[右]最初の二つの数字のような二つの数およびt = A + [右] [左]ことを第一のデジタル配列A [左]、配列の最後の数を選択することができます。T == sの場合は、数2に戻ります。配列が増加しているので、我々は、トンを増やす必要があること、T <sの場合は、左のように、++(右列の最後に、増加し続けることができない)トンを大きくすることができます。T> sが、我々はトンを削減する必要がある場合は、それがright--です。このプロセスは、左> =右まで繰り返されます。コードは以下の通りであります:
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
vector<int> ans;
if(array.empty())
return ans;
int left = 0;
int right = array.size()-1;
while(left<right){
int t = array[left] + array[right];
if(t==sum){
ans.push_back(array[left]);
ans.push_back(array[right]);
return ans;
}
else if(t<sum)
left++;
else right--;
}
return ans;
}
};
アルゴリズムの時間計算量はO(N)です。