Leetcode第42题(接雨水)

简介: 这篇文章介绍了解决LeetCode第42题“接雨水”问题的不同算法,包括双指针法和单调栈法,并提供了C++的代码实现。

题目描述:

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6

解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。

示例 2:输入:height = [4,2,0,3,2,5] 输出:9

class Solution {
public:
    int trap(vector<int>& height) {
        int l = 0,r = height.size() - 1;
        int lmax = 0,rmax = 0,ans = 0;
        while(l < r){
            lmax = max(lmax,height[l]);
            rmax = max(rmax,height[r]);
            if(lmax < rmax){
                ans += lmax - height[l];
                l++;
            }else{
                ans += rmax - height[r];
                r--;
            }
        }
        return ans;
    }
};

使用双指针的方式遍历数组, 并且使用lmax与rmax维护当前左边最大高度和右边最大高度, 然后将能接上的雨水累加到ans中

相关文章
|
7月前
|
容器
leetcode-407:接雨水 II
leetcode-407:接雨水 II
77 0
|
7月前
|
图计算 索引
leetcode-42:接雨水
leetcode-42:接雨水
62 0
|
算法 测试技术 图计算
|
4月前
|
存储
【面试题】接雨水
【面试题】接雨水
20 0
|
6月前
|
算法 图计算
力扣经典150题第十六题:接雨水
力扣经典150题第十六题:接雨水
32 0
|
7月前
|
容器
每日一题——接雨水(单调栈)
每日一题——接雨水(单调栈)
|
7月前
|
图计算
【每日一题Day274】LC42接雨水 | 单调栈
【每日一题Day274】LC42接雨水 | 单调栈
56 0
|
算法
【LeetCode力扣】42. 接雨水
【LeetCode力扣】42. 接雨水
83 0
|
机器学习/深度学习 人工智能 移动开发
Acwing 1574. 接雨水
Acwing 1574. 接雨水
70 0
|
算法 图计算 C++
每日算法系列【LeetCode 42】接雨水
每日算法系列【LeetCode 42】接雨水
120 0