import java.util.ArrayList;

//和为S的两个数字,如果有多组,则返回乘积最小的

////乘积最小的一定是相距最远的两个数字,即为找到之后的第一组。马上return list。找到即退出
public class NoFourtytwo {
    
    public ArrayList<Integer> FindNumbersWithSum(int[] array, int sum){
        ArrayList<Integer> list = new ArrayList<Integer>();
        if(array == null || array.length < 2){
            return list;
        }
        int small = 0;
        int big = array.length - 1;
        int curSum = array[small] + array[big];
        while(small < big){
            if(curSum == sum){
                list.add(array[small]);
                list.add(array[big]);
                return list;
            }else if(curSum < sum){
                curSum = array[++small] +array[big];
            }else{
                curSum = array[small] + array[--big];
            }
        }
        return list;
    }
    
    public static void main(String[] args){
        int[] arr = new int[]{1,2,3,4,5};
        int sum = 5;
        NoFourtytwo fourtytwo = new NoFourtytwo();
        ArrayList<Integer> list = fourtytwo.FindNumbersWithSum(arr, sum);
        System.out.println(list);
        
    }

}