力扣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;
    }
}
相关推荐
ai大模型-探索者6 分钟前
Function Call与MCP(区别、联系与实战)
java·服务器·网络
略略略咯咯11 分钟前
啊啊啊啊啊
java·服务器·数据库
小郎君65822 分钟前
Vue keep-alive 切标签后滚动位置回顶?因为 onDeactivated 里读到的 scrollTop 是 0
算法
SL_staff28 分钟前
运维救火实战:钉钉API变更致薪资计算中断,如何用可视化逻辑引擎5分钟热修复
java·开源·全栈
邵奈一1 小时前
GPT-6.1 Terra速度是Sol的3倍,价格减半
算法
RaaS1001 小时前
Node.js Brotli RCE 漏洞自查指南:fetch、undici、axios 都在影响面,三分钟确认你的版本
人工智能·深度学习·算法
猫猫.1531 小时前
HashTable、HashMap、ConcurrentHashMap 核心区别总结
java·开发语言·java-ee
shehuiyuelaiyuehao1 小时前
算法56,重排链表
数据结构·算法·链表
郭小李1 小时前
spring mvc 工作流程
java·spring·mvc