因为是有序递增数组,因此可以采用左右夹逼的方法解决,即设置左右指针,
- 若array[left] + array[right] == sum,则直接返回
- 若array[left] + array[right] > sum,则需要将right减小,让整体的和减小
- 若array[left] + array[right] < sum,则需要将left增大,让整体的和增大
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
vector<int> v;
int left = 0, right = array.size() - 1;
while(left < right){
if(array[left] + array[right] == sum){
v.push_back(array[left]);
v.push_back(array[right]);
break;
}else if(array[left] + array[right] > sum) right--;
else left++;
}
return v;
}
};