力扣42. 接雨水

双指针法

  • 思路:
    • 将数组前后设置为 left、right 指针,相互靠近;
    • 在逼近的过程中记录两端最大的值 leftMax、rightMax,作为容器的左右边界;
    • 更新指针规则:
      • 如果数组左边的值比右边的小,则更新 left 指针,同时累计当前组成的容器的容量;(该容器在更新 leftMax 时闭合)
      • 反之,则更新 right 指针,同理累计其组成容器的容量;
cpp 复制代码
class Solution {
public:
    int trap(vector<int>& height) {
        int capacity = 0;
        int left = 0;
        int right = height.size() - 1;
        int leftMax = 0;
        int rightMax = 0;

        while (left < right) {
            leftMax = std::max(leftMax, height[left]);
            rightMax = std::max(rightMax, height[right]);
            if (height[left] < height[right]) {
                capacity += (leftMax - height[left]);
                ++left;
            } else {
                capacity += (rightMax - height[right]);
                --right;
            }
        }

        return capacity;
    }
};
相关推荐
qingy_20461 分钟前
Java基础:数据类型
java·开发语言·算法
小璐资源网1 分钟前
排序算法概览:十大排序算法一览
数据结构·算法·排序算法
Allen_LVyingbo6 分钟前
PostgreSQL动态分区裁剪技术:查询性能优化解析(2026年版)
数据库·算法·观察者模式·postgresql·性能优化·架构
少许极端19 分钟前
算法奇妙屋(三十二)-DFS解决floodfill问题
算法·深度优先·dfs·floodfill
m0_7166670726 分钟前
嵌入式C++驱动开发
开发语言·c++·算法
Lenyiin26 分钟前
《LeetCode 顺序刷题》51 - 60
java·c++·python·算法·leetcode·深度优先·lenyiin
Sakinol#32 分钟前
Leetcode Hot 100 —— 图论
算法·leetcode·图论
我怎么又饿了呀32 分钟前
DataWhale—大模型的算法基础(环境的部署Anaconda)
人工智能·算法
ZZhYasuo38 分钟前
冒泡排序1
java·算法·排序算法
重生之后端学习39 分钟前
72. 编辑距离
数据结构·算法·leetcode·深度优先·图论