力扣42 接雨水

听说字节每人都会接雨水,我也要会哈哈哈

数据结构:数组

算法:核心是计算这一列接到多少雨水,它取决于它左边的最大值和右边的最大值,如下图第三根柱子能接到的雨水应该是第一根柱子高度和第五根柱子高度的最小值减去第三根柱子高度。

java 复制代码
class Solution {
    public int trap(int[] height) {
        int n = height.length;
        if (n == 0) {
            return 0;
        }

        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 ans = 0;
        for (int i = 0; i < n; ++i) {
            ans += Math.min(leftMax[i], rightMax[i]) - height[i];
        }
        return ans;
    }
}
相关推荐
琪蘤2 分钟前
点胶换阀高度标定计算说明
算法
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ6 分钟前
EasyExcel中AnalysisEventListener<T>抽象类的方法执行顺序
java
handler017 分钟前
算法:查并集
开发语言·数据结构·c++·笔记·学习·算法·c
plus4s8 分钟前
3月19日(进阶10)
算法
Trouvaille ~12 分钟前
【优选算法篇】快速排序模型——从数组划分到快速选择
算法·leetcode·青少年编程·面试·蓝桥杯·快速排序·基础入门
Wect12 分钟前
LeetCode 918. 环形子数组的最大和:两种解法详解
前端·算法·typescript
悟空码字15 分钟前
别再让你的SpringBoot包"虚胖"了!这份瘦身攻略请收好
java·spring boot·后端
szm022517 分钟前
操作系统-
java·linux·服务器
圣保罗的大教堂19 分钟前
leetcode 3212. 统计 X 和 Y 频数相等的子矩阵数量 中等
leetcode
哆啦A梦158822 分钟前
java项目在后端做跨域配置
java·vue3