感觉晚上的战斗力强点

乘积最小其实就是最外层,这个我们在中学学过的基本不等式就能理解到,当 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;
}