问题描述
给出一个递增数组和一个目标值s,找出和为s的两个数
问题解法
定义两个指针start,end,分别指向头与尾。如果两指针对应的数字相加大于s,则左移end指针,否则右移start指针
代码如下
import java.util.ArrayList;
/**
* 和为S的两个数
*/
public class FindNumbersWithSum {
public static ArrayList<Integer> FindNumbersWithSum(int [] array, int sum) {
ArrayList<Integer> result=new ArrayList<Integer>();
if (array==null||array.length<=0){
return result;
}
//定义两个指针,一个指向开始,一个指向末尾
int start=0;
int end=array.length-1;
while (start<end){
//数小,左指针后移
if ((array[start]+array[end])<sum){
start++;
}else if ((array[start]+array[end])>sum){
end--; //数大 左移
}else {
result.add(array[start]);
result.add(array[end]);
System.out.println(array[start]+":"+array[end]);
break;
}
}
return result;
}
public static void main(String[] args) {
int array []={1,2,4,7,11,15};
System.out.println(FindNumbersWithSum(array,15).);
}
}