题解 | #容器盛水问题#

容器盛水问题

http://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f

 public static long maxWater(int[] arr) {
        if (arr.length == 0) {
            return 0;
        }
        int l = 0;
        int r = arr.length - 1;
        long res = 0;
        while (r > l) {
            int tmp = Math.min(arr[r], arr[l]);  // 找到最小的边界 盛水由最小边界决定
            // 找完一个凹槽
            while (r > l && arr[l] <= tmp) { // 边界向中间缩 逐步寻找凹槽
                res += tmp - arr[l];
                l++;
            }

            // 开始找下一个凹槽
            while (r > l && arr[r] <= tmp) { // 边界向中间缩 逐步寻找凹槽
                res += tmp - arr[r];
                r--;
            }
        }
        return res;
    }
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 18:00
点赞 评论 收藏
分享
不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务