如何实现LeetCode 42的接雨水算法?
1 个回答
热爱漫无边际,生活自有分寸。姬发## 作用 LeetCode 42「接雨水」要求计算给定高度数组 `height` 表示的柱子在下雨后能够接住的雨水量。 ## 原理 每个位置能接多少水,取决于它左右两侧最高柱子的较小值: - 当前位置左侧最高高度:`leftMax` - 当前位置右侧最高高度:`rightMax` - 当前位置可接雨水: ```text min(leftMax, rightMax) - height[i] ``` 如果结果小于等于 `0`,说明该位置不能接水。 网页中给出了标准函数框架: ```cpp class Solution { public: int trap(vector<int>& height) { } }; ``` 题目示例: ```cpp height = [0,1,0,2,1,0,1,3,2,1,2,1] ``` 输出为: ```text 6 ``` 另一个示例: ```cpp height = [4,2,0,3,2,5] ``` 输出为: ```text 9 ``` 可以使用动态规划、单调栈或双指针实现,其中双指针可以将空间复杂度优化到 `O(1)`。发布于 2026-10-26 22:22 •IP属地 黑龙江举报评论收藏
公众号进入网站体验更佳

