感觉晚上的战斗力强点
乘积最小其实就是最外层,这个我们在中学学过的基本不等式就能理解到,当 a=b 时,乘积最大,也就是说a与b靠得越近,乘积越大。
(a+b=k,其中k为常数,求 ab 的最大值)
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer> res=new ArrayList<>(); if(array.length==0 || array ==null){ return res; } if(array[0]>sum ){ //如果最小的值都比 sum 大,又是一个递增的数组肯定玩完 return res; } int left=0; int right=array.length-1; while(left<right){ int tmp=array[left]+array[right]; if(tmp==sum){ res.add(array[left]); res.add(array[right]); break; }else if(tmp<sum){ left++; } else { right--; } } return res; }