Hot100:接雨水(Trapping Rain Water)双指针 / 前后最大值 ACERS 解析

副标题 / 摘要 接雨水是最经典的“区间高度约束”题。本文按 ACERS 模板讲清双指针思路、关键公式与工程迁移,并提供多语言可运行实现。 预计阅读时长:12~15 分钟 标签:Hot100、双指针、数组 SEO 关键词:Trapping Rain Water, 接雨水, 双指针, 前后最大值, O(n) 元描述:双指针 O(n) 求接雨水总量,含工程场景、复杂度分析与多语言代码。 目标读者 正在刷 Hot100 的学习者 需要掌握“左右边界约束”模板的中级开发者 处理地形/容量/水位等区间分析的工程师 背景 / 动机 接雨水问题本质是“每个位置能盛多少水”,与工程中的容量评估、缓冲区盈余、资源占用上限等模型高度相似。 朴素做法每个位置都向两侧找最高,复杂度 O(n^2)。 双指针与前后最大值可以把复杂度降到 O(n)。 核心概念 局部水位:water[i] = min(maxLeft[i], maxRight[i]) - height[i] 左右边界:当前位置两侧的最高柱子决定水位上限 双指针:用左/右指针同步维护左右最大值 A — Algorithm(题目与算法) 题目还原 给定 n 个非负整数表示每个宽度为 1 的柱子的高度,计算按此排列的柱子能接多少雨水。 输入输出 名称 类型 描述 height int[] 柱子高度数组 返回 int 能接住的雨水总量 示例 1(官方) height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出 = 6 示例 2(官方) height = [4,2,0,3,2,5] 输出 = 9 C — Concepts(核心思想) 关键公式 对任意位置 i: ...

2026年1月24日 · 5 分钟 · map[name:Jeanphilo]