描述
输入一个递增排序的数组array和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,返回任意一组即可,如果无法找出这样的数字,返回一个空数组即可。
数据范围:
0<=len(array)<=105
1<=array[i]<=106
示例1
输入:
[1,2,4,7,11,15],15
复制返回值:
[4,11]
复制说明:
返回[4,11]或者[11,4]都是可以的
思路:
1.使用双指针,头尾各一个,如果和比target小,left++,反之right--
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
int i=0,j=array.size()-1;
while(i<j){
int tmp=array[i]+array[j];
if(tmp==sum){
return {array[i],array[j]};
}else if(tmp<sum){
i++;
}else {
j--;
}
}
return {};
}
};