42. 接雨水

Posted zzytxl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了42. 接雨水相关的知识,希望对你有一定的参考价值。

给定 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. 接雨水的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 每日一题 42. 接雨水

每日一题:42. 接雨水

42. 接雨水

LeetCode42题动态规划 - 接雨水

11-1:(42)接雨水

LeetCode:接雨水42