劍指offer--和為S的最小的兩個數
阿新 • • 發佈:2019-01-04
輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。
輸出描述:
對應每個測試案例,輸出兩個數,小的先輸出。
這個題,因為給出的陣列是遞增的,所以,從最外層開始判斷。
package JZoffertest; import java.util.ArrayList; public class test42 { public static ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer> list=new ArrayList<Integer>(); if(array==null||array.length==0) return list; int left=0; int right=array.length-1; while(left<right) { int total=array[left]+array[right]; if(total==sum) { list.add(array[left]); list.add(array[right]); return list; }else if(total>sum) { //大於sum ,說明太大了,right左移尋找更小的數 right--; }else { left++; } } return list; } }