思路:
创建两个指针,初始位置分别指向数组的头部和尾部,把对应位置的数字求和,比较和s的大小,如果相等,即为所求,如果大于s,则把尾指针向前移动,如果小于s,则把头指针向前移,知道找到和为s的两个数字的数字为止。
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> list=new ArrayList<>();
if(array==null||array.length<2)
return list;
int head=0;
int tail=array.length-1;
while(head<tail){
int s=array[head]+array[tail];
if(sum==s){
list.add(array[head]);
list.add(array[tail]);
break;
}else if(s>sum){
tail--;
}else
head++;
}
return list;
}
}