码迷,mamicode.com
首页 > 其他好文 > 详细

42. 接雨水

时间:2020-04-09 12:18:16      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:app   content   trap   表示   移动   分表   影响   tco   while   

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

技术图片

上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。

示例:

输入: [0,1,0,2,1,0,1,3,2,1,2,1]
输出: 6

元素只受左右两边最高处高度的影响

class Solution {
    public int trap(int[] height) {
        if(height == null || height.length == 0) return 0;
        int len = height.length;
        int lM = height[0],rM = height[len - 1];
        int l = 0,r = len - 1;
        int res = 0;
        while(l < r){
            if(lM < rM){
                //左指针向右移动
                if(height[l] > lM){
                    //更新lM
                    lM = height[l];
                }else{
                    res += lM - height[l++];
                }
            }else{
                if(height[r] > rM){
                    //更新rM
                    rM = height[r];
                }else{
                    res += rM - height[r--];
                }
            }
        }
        return res;
    }
}

 

42. 接雨水

标签:app   content   trap   表示   移动   分表   影响   tco   while   

原文地址:https://www.cnblogs.com/zzytxl/p/12665911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!