力扣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;
    }
}
相关推荐
Survivor0011 分钟前
高并发系统流量治理的底层算法
java·开发语言
bIo7lyA8v4 分钟前
算法可视化对教学与调试效率的影响分析的技术8
算法
凡人叶枫4 分钟前
Effective C++ 条款35:考虑 virtual 函数以外的其他选择
java·c++·spring
garmin Chen12 分钟前
从 Transformer 到 Agent:大模型技术全景解析
java·人工智能·python·深度学习·transformer
hunterkkk(c++)13 分钟前
优先队列启发式最短路径快速算法(优化SPFA)-HEAP_SPFA算法
算法
愚公移码17 分钟前
蓝凌EKP18产品:流程引擎技术篇之流程核心概念模型
java·人工智能·流程引擎·蓝凌
Full Stack Developme24 分钟前
Apache Tika 教程
java·开发语言·python·apache
SiliconGazer26 分钟前
第15届国赛满分代码解析(下)—— 运动轨迹算法、按键交互与完整状态机
算法·状态机·stc15f2k60s2·浮点运算·蓝桥杯国赛·运动轨迹、·向量分解
Navigator_Z27 分钟前
LeetCode //C - 1096. Brace Expansion II
c语言·算法·leetcode
luj_176829 分钟前
FreeDOS vs MS-DOS PC-DOS 对比解析
服务器·c语言·开发语言·经验分享·算法