感觉晚上的战斗力强点
乘积最小其实就是最外层,这个我们在中学学过的基本不等式就能理解到,当 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;
}
京公网安备 11010502036488号