题解 | #接雨水问题#

接雨水问题

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

  • 与上一题类似,计算最大容量,由于“短板效应”,每次都选短的一边开始计算;
  • 然后将从短边开始可以装入的水量累加,继续迭代;
  •     public long maxWater (int[] arr) {
            // write code here
            int l=0,r=arr.length-1;
            long res=0;
            int ml=0,mr=0;
            while(l<r){
                ml=Math.max(ml,arr[l]);//选取较大值作为当前的最左边界
                mr=Math.max(mr,arr[r]);//选取较大值作为当前的最右边界
                if(ml<mr){//由于短板效应,选较短的一边开始计算
                    res+=ml-arr[l++];
                }else
                    res+=mr-arr[r--];
            }
            return res;
        }


#做项目##实习下班后你在做什么#
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:52
点赞 评论 收藏
分享
一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
牛客737698141号:他们可以看到在线简历的。。。估计不合适直接就拒了
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务