面试经典-11-接雨水

题目

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

示例 1:
在这里插入图片描述
输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。

class Solution {
    // 失败
    public int trap(int[] height) {
        int n = height.length;
        int[] leftMax = new int[n];
        leftMax[0] = height[0];
        for (int i = 1; i < n; i++) {
            leftMax[i] = Math.max(leftMax[i - 1], height[i]);
        }

        int[] rightMax = new int[n];
        rightMax[n - 1] = height[n - 1];
        for (int i = n - 2; i >= 0; i--) {
            rightMax[i] = Math.max(rightMax[i + 1], height[i]);
        }

        int res = 0;
        for (int i = 0; i < n; i++) {
            // 左右两边包括本个柱子的最大高度,在减去当前柱子高度,就是雨水的高度
            // 如果当前柱子太高的话也是存不住水的
            res += Math.min(leftMax[i], rightMax[i]) - height[i];
        }
        return res;
    }
}

相关推荐

  1. 力扣上的经典问题:雨水

    2024-03-13 18:02:02       31 阅读
  2. 力扣经典150题第十六题:雨水

    2024-03-13 18:02:02       33 阅读
  3. 【困难】42. 雨水

    2024-03-13 18:02:02       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-13 18:02:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-13 18:02:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-13 18:02:02       82 阅读
  4. Python语言-面向对象

    2024-03-13 18:02:02       91 阅读

热门阅读

  1. 一篇文章讲清楚HashMap

    2024-03-13 18:02:02       41 阅读
  2. 【数据结构学习笔记】选择排序

    2024-03-13 18:02:02       32 阅读
  3. Leetcode刷题笔记——贪心篇

    2024-03-13 18:02:02       34 阅读
  4. 完整的模型训练套路及GPU的利用

    2024-03-13 18:02:02       43 阅读
  5. 听力 3.12

    2024-03-13 18:02:02       37 阅读
  6. 万能近似定理

    2024-03-13 18:02:02       46 阅读
  7. C++之std::move

    2024-03-13 18:02:02       42 阅读
  8. Chapter 8 - 24. Congestion Management in TCP Storage Networks

    2024-03-13 18:02:02       40 阅读