問題描述
????給出一個遞增數(shù)組和一個目標值s,找出和為s的兩個數(shù)
問題解法
????定義兩個指針start,end,分別指向頭與尾。如果兩指針對應(yīng)的數(shù)字相加大于s簸淀,則左移end指針,否則右移start指針
代碼如下
import java.util.ArrayList;
/**
* 和為S的兩個數(shù)
*/
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){
//數(shù)小,左指針后移
if ((array[start]+array[end])<sum){
start++;
}else if ((array[start]+array[end])>sum){
end--; //數(shù)大 左移
}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).);
}
}