力扣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;
    }
}
相关推荐
飞Link30 分钟前
告别盲目找Bug:深度解析 TSTD 异常检测中的预测模型(Python 实战版)
开发语言·python·算法·bug
1.14(java)38 分钟前
Spring-boot快速上手
java·开发语言·javaee
Darkdreams1 小时前
SpringBoot项目集成ONLYOFFICE
java·spring boot·后端
记忆多1 小时前
c++名字空间 函数模版 左右值
开发语言·c++·算法
三伏5221 小时前
控制理论前置知识——相平面数学基础2(示例部分)
算法·平面·控制
lhbian1 小时前
【Spring Cloud Alibaba】基于Spring Boot 3.x 搭建教程
java·spring boot·后端
2401_889884662 小时前
高性能计算通信库
开发语言·c++·算法
代码雕刻家2 小时前
3.6.Maven-依赖管理-依赖范围
java·maven
不想看见4042 小时前
Hamming Distance位运算基础问题--力扣101算法题解笔记
算法
像污秽一样3 小时前
算法与设计与分析-习题4.1
算法·链表·排序算法