1. 程式人生 > >劍指offer--和為S的最小的兩個數

劍指offer--和為S的最小的兩個數

輸入一個遞增排序的陣列和一個數字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;
    	
    }
}