和为S的两个元素

和为S的两个数字

http://www.nowcoder.com/questionTerminal/390da4f7a00f44bea7c2f3d19491311b

感觉晚上的战斗力强点

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

相关推荐

2024-12-25 09:09
四川师范大学 运营
想和你交朋友的潜伏者要冲国企:先去沃尔玛亲身感受标准化流程体系,一两年后再跳槽国内任何零售行业,可以有更大选择权吧?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务