力扣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;
    }
};
相关推荐
muddjsv4 分钟前
什么是算法?——现代视角下的一次凝视
算法
laplace01234 分钟前
智能体经典范式构建
算法·langchain·大模型·agent
小雨下雨的雨5 分钟前
Flutter鸿蒙共赢——色彩的流变:流体梯度网格与现代视觉重构
算法·flutter·华为·重构·交互·harmonyos·鸿蒙
Swift社区6 分钟前
LeetCode 473 火柴拼正方形 - Swift 题解
算法·leetcode·swift
Allen_LVyingbo7 分钟前
面向“病历生成 + CDI/ICD”多智能体系统的选型策略与落地实践(三)
算法·自然语言处理·性能优化·知识图谱·健康医疗·柔性数组
金枪不摆鳍8 分钟前
算法-链表双指针
数据结构·算法·链表
MarkHD9 分钟前
智能体在车联网中的应用:第53天 基于CTDE-MAPPO的快速路合流区协同驾驶项目蓝图(SUMO路网与智能体设计篇)
算法
南行*10 分钟前
逆向中的Hash类算法
算法·网络安全·哈希算法
高洁0110 分钟前
AI智能体搭建(2)
人工智能·深度学习·算法·机器学习·知识图谱
木易 士心14 分钟前
加密与编码算法全解:从原理到精通(Java & JS 实战版)
java·javascript·算法