如何实现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属地 黑龙江
    举报
    评论
    收藏