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);
}
}