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中

相关文章
|
6月前
|
存储 人工智能 Linux
2026年阿里云部署OpenClaw(Clawdbot)数据持久化存储保姆级教程
2026年,OpenClaw(前身为Clawdbot)作为轻量化AI自动化代理工具,在阿里云生态中得到广泛应用,其运行过程中产生的记忆数据、结果数据和运行日志是实现AI助手“永不遗忘”和功能可追溯的核心。随着使用时长增加,这类数据规模持续增长,本地存储不仅面临磁盘容量瓶颈,还存在数据丢失的风险。依托阿里云对象存储OSS(Object Storage Service)的弹性、低成本、高可靠特性,可实现OpenClaw全类型数据的持久化存储,让AI助手的运行数据得到安全留存与灵活管理。本文结合阿里云最新产品特性与OpenClaw v2026.2版本的适配要求,从数据存储需求分析、阿里云OSS挂载配
1171 1
|
小程序 JavaScript 数据库
微信小程序系列——上传下载图片以及图片的展示
微信小程序系列——上传下载图片以及图片的展示
|
5月前
|
人工智能 机器人 API
OpenClaw阿里云无影云电脑一键部署实战:快速搭建、飞书无缝集成与常见问题解答
OpenClaw(原Clawdbot)作为轻量化、可扩展的AI智能体框架,凭借灵活的模型接入、多渠道消息分发与自动化任务能力,成为个人与团队搭建专属AI助手的优选。2026年,阿里云无影云电脑提供OpenClaw官方预置镜像,无需手动配置复杂环境,新手可通过桌面化操作快速完成云端部署。将OpenClaw接入飞书,可让AI助手直接在企业协作、团队沟通场景中响应指令、处理任务,实现从云端部署到实际应用的闭环。
909 11
|
人工智能 监控 安全
自学记录鸿蒙 API 13:骨骼点检测应用Core Vision Skeleton Detection
骨骼点检测技术能够从图片中识别出人体的关键骨骼点位置,如头部、肩部、手肘等,广泛应用于运动健身指导、游戏交互、医疗辅助、安全监控等领域。我决定深入学习HarmonyOS Next API 13中的Skeleton Detection API,并开发一个简单的骨骼点检测应用。通过理解API核心功能、项目初始化与配置、实现检测功能、构建用户界面,以及性能优化和功能扩展,逐步实现这一技术的应用。未来计划将其应用于健身指导和智能监控领域,探索与其他AI能力的结合,开发更智能的解决方案。如果你也对骨骼点检测感兴趣,不妨一起进步!
581 9
|
数据可视化 Python
Matplotlib 教程 之 Matplotlib 饼图 4
使用 Matplotlib 的 `pie()` 方法绘制饼图,展示各部分占比。`pie()` 方法可通过多个参数定制图表样式,如颜色、标签和百分比显示格式等。通过实例演示了如何突出显示特定扇区并格式化百分比输出。
430 4
|
人工智能 分布式计算 数据可视化
大模型私有化部署全攻略:硬件需求、数据隐私、可解释性与维护成本挑战及解决方案详解,附示例代码助你轻松实现企业内部AI应用
【10月更文挑战第23天】随着人工智能技术的发展,企业越来越关注大模型的私有化部署。本文详细探讨了硬件资源需求、数据隐私保护、模型可解释性、模型更新和维护等方面的挑战及解决方案,并提供了示例代码,帮助企业高效、安全地实现大模型的内部部署。
3810 2
pyqt6 实现弹窗案例
本文介绍了如何实现一系列弹窗效果,包括基础弹窗、消息对话框、输入对话框和清除按钮。通过设置 `self.dialog = Dialog()` 可以轻松实现基础弹窗,而消息对话框则使用 `QMessageBox` 类。输入对话框支持文本、数字和下拉列表输入,清除按钮用于清空输入框内容。每个功能都通过按钮触发相应的槽函数来实现。
|
搜索推荐 程序员 Android开发
OpenGL ES 学习资源分享
学习了一段时间的 OpenGL ES,并在公司的项目中得到了运用,也算是有了一些积累,现在分享一些当初学习的资源,大家一起来学习,共同交流进步。
809 0
OpenGL ES 学习资源分享
|
图计算
接雨水(leetcode hot100)
接雨水(leetcode hot100)
|
Linux Docker 容器
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的

热门文章

最新文章