美文网首页
LeetCode42----接雨水

LeetCode42----接雨水

作者: 海盗的帽子 | 来源:发表于2019-01-07 21:00 被阅读8次

问题

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

image.png

示例

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

输出: 6

解法

雨水的量 = 蓝色的面积+黑色的面积 - 黑色的面积

image.png
  • 首先可以知道从左后最高点位置,柱体(蓝+黑)是越来越高的,最右到最高点位置也是。
  • 使用 cur 记录当前的高度
  • 从左到最高点位置,如果当前高度没有高于 cur ,就不用更新cur, 否则就更新 cur .
  • 总的面积就是每个柱形的面积和,即每次遍历的时候就 加上 cur.
  • 加上最高的位置的大小 hegiht[maxIndex]
  • cur 更新为 0 再从右到最高点以同样的方式记录。
class Solution {
    public int trap(int[] height) {
        if(height == null || height.length == 0){
            return 0;
        }
        
        int maxIndex = 0;
        for(int i= 0 ; i< height.length ;i++){
            if(height[maxIndex] < height[i]){
                maxIndex = i;
            }
        }
        int cur =0;
        int sum = 0;
        
        for(int i=0;i<maxIndex ;i++){
            if(height[i] > cur){
                cur = height[i];
            }
            sum += cur;
        }
        
        sum += height[maxIndex];
        
        cur = 0;
        for(int i = height.length -1;i > maxIndex ;i--){
            if(height[i] > cur){
                cur = height[i];
            }
            sum += cur;
        }
        
        for(int i=0;i< height.length ;i++){
            sum-=height[i];
        }
        return sum;
        
        
    }
}

相关文章

  • LeetCode42----接雨水

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

  • 接雨水

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

  • 接雨水

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/trap...

  • 接雨水

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

  • 接雨水

    https://leetcode-cn.com/explore/interview/card/bytedance/...

  • 接雨水

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

  • 接雨水

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/trappi...

  • 接雨水

    题目: 题目的理解: 从示例图中可以很好的理解,题目的意思,真的是题目描述越少越难。最直接的思路:(1)为一个高度...

  • 接雨水

    LeetCode第42题 题目描述:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下...

  • 接雨水

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

网友评论

      本文标题:LeetCode42----接雨水

      本文链接:https://www.haomeiwen.com/subject/vpbprqtx.html