/*
思路:双指针问题
构造两个指针分别指向两个数组元素,并将其初始化为头元素和尾元素
计算两个元素的和,如果比S小,则小指针++;
如果比S大,则大指针--;
如果相等即为想要的结果;(即使后面有相等的情况,但是根据数学基本性质其乘机一定更大)
*/
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
vector<int> res;
int size = array.size();
if(size<2)
return res;
int pre = 0,post = size - 1;
while(pre < post){
int curSum = array[pre] + array[post];
if(curSum < sum)
pre++;
if(curSum == sum){
res.push_back(array[pre]);
res.push_back(array[post]);
return res;
}
if(curSum > sum)
post--;
}
return res;
}
};