力扣 42. 接雨水
题目来源:https://leetcode.cn/problems/trapping-rain-water/description/


C++题解1:双指针
按列算,一列一列的求雨水面积。使用双指针是记录当前列左右侧的最大元素。

class Solution {
public:int trap(vector<int>& height) {int result = 0;int len = height.size();vector<int> leh(len, 0), rih(len, 0);leh[0] = 0;rih[len-1] = 0;for(int i = 0; i < len; i++) {if(i + 1 < len) {leh[i+1] = max(leh[i], height[i]);}if(len-i-2 >= 0){rih[len-i-2] = max(rih[len-i-1], height[len-i-1]);}}for(int i = 0; i < len; i++) {int tmp = min(leh[i], rih[i]);if(tmp > height[i]) result = result + tmp - height[i];}return result;}
};
C++题解2:单调栈(注意:栈存放元素索引就可以直接找到元素值)
按行算,横向算法。用单调栈可以求单前列右侧大的元素值。

当height[i]比st.top()所在元素值大时,如果st弹出一个元素后不是空栈,那么说明一定有凹槽(能装雨水)。因为栈里存放的是索引,所以可以求出横向有多长(即上面箭头的长度);再比较一下height[i]与新的height[st.top()]的长短,可以求出纵向有多长;相乘即可求出箭头所在位置蓝色面积。
class Solution {
public:int trap(vector<int>& height) {int len = height.size();if(len <= 2) return 0;stack<int> st;int result = 0;for(int i = 0; i < len; i++) {while(!st.empty() && height[i] > height[st.top()]) {int tmp = st.top();st.pop();if(!st.empty()) {result += (min(height[i], height[st.top()]) - height[tmp]) * (i - st.top() - 1);}}st.push(i);}return result;}
};
相关文章:
力扣 42. 接雨水
题目来源:https://leetcode.cn/problems/trapping-rain-water/description/ C题解1:双指针 按列算,一列一列的求雨水面积。使用双指针是记录当前列左右侧的最大元素。 class Solution { public:int trap(vector<int>& height) {in…...
Elastic Platform 8.14:ES|QL 正式发布、静态加密和向量搜索优化
作者:来自 Elastic Gilad Gal, Tyler Perkins, Alex Chalkias, Trevor Blackford, Ninoslav Miskovic, Fabio Busatto, Aris Papadopoulos Elastic Platform 8.14 提供了 Elasticsearch 查询语言 (ES|QL) 的正式发行版 (GA) — Elastic 中数据探索和操作的未来。它还…...
UE4获取动画序列资产的动画时长
谢谢”朝闻道“大佬的指点~...
win10怎么截图?电脑截图的3个方法分享
win10怎么截图?在Windows 10操作系统中,截图功能不仅强大而且极其便捷。无论用户需要快速捕捉整个屏幕的内容,还是精确截取屏幕上的特定区域,它都能迅速响应并满足需求。通过内置的截图工具和快捷键,我们可以轻松完成各…...
无线领夹麦克风哪个品牌性价比高?推荐领夹麦克风性价比最高品牌
当今的直播、短视频已经深深的融入到了我们的生活当中,很多小伙伴会通过拍摄短视频、Vlog来分享自己生活精彩的瞬间。不过录制视频时,如果单纯靠手机拾音,距离手机越远,声音越小越不清晰如果有噪音干扰,那更是“惨不忍…...
C语言----深入理解指针(5)
1.sizeof和strlen的对比 sizeof计算变量所占内存空间的大小的,单位是字节 sizeof只关注内存空间的大小,不在乎内存中方的什么数据 sizeof是操作符不是函数 sizeof会将\0算进去的 // sizeof计算变量所占内存空间的大小的,单位是字节int m…...
Ansible——cron模块
目录 参数总结 示例1:创建一个定时任务 示例2:删除一个定时任务 示例3:每周一早上 3 点清理临时文件 示例4:每小时运行一次日志轮转 示例5:为指定用户添加一个定时任务 Playbook (YAML 格式) 中管理定时任务。 …...
保存图片奇怪的bug
今天发现一个奇怪的bug 这个的dpi是100de ,但是我取完切片之后,发现这个结果就变了...
【Go语言精进之路】构建高效Go程序:了解map实现原理并高效使用
🔥 个人主页:空白诗 🔥 热门专栏:【Go语言精进之路】 文章目录 引言一、什么是map1.1 map的基本概念与特性1.2 map的初始化与零值问题1.3 map作为引用类型的行为 二、map的基本操作2.1 插入数据2.2 获取数据个数2.3 查找和数据读取…...
【机器人和人工智能——自主巡航赛项】进阶篇
文章目录 案例要求创建地图rviz仿真 保存地图坐标点定位识别训练主逻辑理解语音播报模块匹配二维码识别多点导航讲解视频其余篇章 案例要求 创建地图 ./1-gmapping.sh 把多个launch文件融合在sh文件里面 rviz仿真 rviz是rose集成的可视化界面,查看机器人的各项数…...
[大师C语言(第二十五篇)]C语言字符串探秘
引言 字符串是编程中不可或缺的基本数据类型之一,它用于表示和操作文本数据。在C语言中,字符串以一种独特的方式实现,与许多其他编程语言的处理方式不同。本文将深入探讨C语言字符串背后的技术,帮助你更好地理解和应用字符串。 …...
xLua(一) 环境安装笔记
为了方便查阅记录一下xLua的安装地址及方法 1.登录地址下载: https://github.com/Tencent/xLua 2.解压文件 将文件中的这些内容拷贝到项目中的Asset文件夹中 注意 : 工程项目路径不得含有中文 3.将Tools复制到Asset同级目录下 4.导入后会发现有Bug,需要导入工程 5.还有另…...
Python基础教程(十一):数据结构汇总梳理
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝Ὁ…...
制造型企业图纸泄露问题,如何从根源解决核心文件资料泄露问题?
制造型企业最核心重要的文件当然是图纸,图纸在制造型企业中起到关键主导地位,如果图纸泄露与研发性企业源代码被泄露一样的严重,制造型企业如何保护核心图纸不被外泄是企业在日常经营过程中的重要组成部分,现在有很多防止泄露的产…...
英伟达最新GPU和互联路线图分析
Nvidia在计算、网络和图形领域独树一帜,其显著优势在于雄厚的资金实力及在生成式人工智能市场的领先地位。凭借卓越的架构、工程和供应链,Nvidia能够自由实施创新路线图,引领行业未来。 到 21 世纪,Nvidia 已经是一个非常成功的创…...
Github 2024-06-10 开源项目日报 Top10
根据Github Trendings的统计,今日(2024-06-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目2Go项目2PHP项目1Blade项目1TypeScript项目1Lua项目1Dart项目1Swift项目1Cuda项目1Python项目1MDX项目1Ventoy: 100%开源的可启动USB解决方…...
前后端分离项目中Spring Boot返回的时间与前端相差8个小时
概述 今天在做一个前后端分离项目时,发现从后端获取的时间与从数据库获取的时间相差八个小时,最终排查后发现由于Springboot使用本地时区导致,修改SpringBoot时区后解决 环境 MySQL8SpringBoot 原因排查 发现从后端获取的数据总是比前端快八个小时 …...
stm32MP135裸机编程:使用USB/UART烧录程序到SD卡并从SD卡启动点亮一颗LED灯
0 参考资料 轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf STM32CubeProgrammer v2.16.0 烧录需要的二进制文件1 烧录到SD卡需要哪些文件 参考《轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序》,烧录需要的SD卡文件如下: &a…...
【NoSQL数据库】Redis Cluster集群(含redis集群扩容脚本)
Redis Cluster集群 Redis ClusterRedis 分布式扩展之 Redis Cluster 方案功能数据如何进行存储 redis 集群架构集群伸缩向集群中添加一个新的master节点,并向其中存储 num10 .脚本对redis集群扩容缩容,脚本参数为redis集群,固定从6001移动200…...
重邮计算机网络803-(2)物理层
一.物理层 1.介绍 物理层的主要任务描述为确定与传输媒体的接口的一些特性,即: ①机械特性 指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等等。 ②电气特性 指明在接口电缆的各条线上出现的电压的范围。 ③功能特性 指明某条线上…...
OpenClaw性能测试:Qwen3.5-4B-Claude处理百页文档实测
OpenClaw性能测试:Qwen3.5-4B-Claude处理百页文档实测 1. 测试背景与目标 上周我在整理一个开源项目的技术文档时,遇到了一个头疼的问题——这份文档长达137页,包含了代码示例、架构图和版本变更说明。手动梳理关键信息耗费了我整整两天时间…...
知识点总结--day09(Mybatis及Mybatis-Plus)
目录 1、系统架构流程? 2结果集映射? 3mapper传参? 4、xml常用配置 5、缓存机制 6、分页插件 7、Mybatis-Plus常用API 末尾页 1、系统架构流程? 执行过程: mybatis配置 mybatis-config.xml,名称可变,此文件作为mybatis的全局配置…...
别再只会docker push了!Harbor镜像上传的5个隐藏技巧与实战避坑指南
Harbor镜像上传实战:5个高阶技巧与避坑指南 当你在凌晨三点被CI/CD流水线的失败通知惊醒,发现又是镜像上传问题导致整个发布流程卡住时,就会明白掌握Harbor的进阶用法有多重要。作为企业级容器镜像仓库,Harbor远比简单的docker pu…...
合宙 MCP 工具:TRAE AI 自然语言控制 Luatools 实操
合宙MCP工具基于 MCP 协议,实现 AI 大模型与 Luatools 的无缝连接,开发者通过简单 JSON 配置,就能在 TRAE 编辑器用自然语言操控 Luatools 完成固件下载、日志获取等操作,告别手动烧录的繁琐。 核心能力: 固件自动烧录…...
2026 工程指南:为什么 AWS Bedrock + Claude 4.6 正在成为多 Agent 协作的底层首选?
进入 2026 年第一季度,大模型领域的竞争已经从“单纯的参数规模”转向了“端到端的工程效率”。随着 GPT-5.4 陷入推理成本高企的泥潭,Anthropic 联手亚马逊发布的 Claude 4.6 托管方案,正在通过 Amazon Bedrock 平台迅速收割企业级市场。作为…...
OpenAI推安全漏洞赏金计划,应对AI潜在风险
OpenAI启动公共安全漏洞赏金计划,剑指AI潜在风险品玩3月26日消息,OpenAI正式推出公共安全漏洞赏金计划,此计划意在识别并修复其产品中潜在的AI滥用与安全风险。该计划是对现有安全漏洞赏金项目的补充,专门接纳那些虽不构成传统技术…...
Unity 工具之(SharpZipLib)跨平台中文Zip压缩与解压实战指南(附多线程优化)
1. 为什么选择SharpZipLib处理Unity中的Zip文件 在Unity项目开发中,资源打包和网络传输经常需要处理压缩文件。SharpZipLib作为.NET平台的老牌压缩库,相比Unity内置的压缩方案有三个不可替代的优势: 首先是对中文路径的完美支持。很多开发者都…...
PLCopen运动控制功能块实战:从单轴控制到多轴联动的5个经典案例解析
PLCopen运动控制功能块实战:从单轴控制到多轴联动的5个经典案例解析 在工业自动化领域,精确的运动控制是实现高效生产的关键。无论是简单的传送带定位,还是复杂的多轴协同作业,PLCopen规范提供的标准化功能块都能为工程师提供强大…...
PUMA560轨迹规划踩坑记:DH参数选错,你的仿真结果还准吗?
PUMA560轨迹规划实战:从DH参数陷阱到精准运动控制 第一次在MATLAB中看到PUMA560机械臂的末端执行器画出诡异的"8"字轨迹时,我盯着屏幕足足愣了三分钟。按照教科书上的标准DH参数编写的代码,理论上应该生成完美的直线运动࿰…...
多智能体协作四大架构模式:Subagents/Skills/Handoffs/Router完全指南
← 上一篇:AI大模型3月终局:商业化转向、智能体崛起与安全红线 → 下一篇:大模型推理加速2026:从500ms到80ms的完整优化路径 摘要 当单个 AI Agent 无法高效处理复杂任务时,多智能体系统(Multi-Agent Sys…...
