当前位置: 首页 > news >正文

leetcode42雨水

题目链接:https://leetcode.cn/problems/trapping-rain-water/description/?envType=study-plan-v2&envId=top-100-liked

法一:前缀和
求能装多少水,即左右两边木板高度的最小值减去数组元素。左边木板高度即左区间最大高度,右边木板高度即右区间最大高度。第一个数组存储从最左边到第i个位置的最大高度(前缀最大值),第二个数组存储从最右边到第i的位置的最大高度(后缀最大值)。对于当前位置的前缀最大值 = max(前一个位置的前缀最大值,当前位置的最大高度)。每一个位置的前后缀数组里的值的最小值减去数组中的数值即水

classSolution{intpre_max[20010];intsuf_max[20010];public:inttrap(vector<int>&nums){intn=nums.size();pre_max[0]=nums[0];for(inti=1;i<n;++i)pre_max[i]=max(pre_max[i-1],nums[i]);suf_max[n-1]=nums[n-1];for(inti=n-2;i>=0;--i)suf_max[i]=max(suf_max[i+1],nums[i]);intret=0;for(inti=0;i<n;++i){ret+=min(pre_max[i],suf_max[i])-nums[i];}returnret;}};

法二:优化为双指针(好处,不用创建数组)
前缀最大值 > 后缀最大值,则最大高度为后缀最大值,水量为这个最大高度减去数组元素,右指针左移

classSolution{public:inttrap(vector<int>&nums){intn=nums.size();intpre_max=0,suf_max=0;intleft=0,right=n-1;intret=0;while(left<=right){pre_max=max(pre_max,nums[left]);suf_max=max(suf_max,nums[right]);if(pre_max<suf_max){ret+=pre_max-nums[left++];}elseret+=suf_max-nums[right--];}returnret;}};
http://www.zskr.cn/news/1373221.html

相关文章:

  • Pillow 10升级后,你的图像标注代码还好吗?从getsize到getbbox的迁移避坑指南
  • 求推荐靠谱的孩子独立北京行,老师负责的研学机构 - 品牌2025
  • 如何用OneNote Markdown插件快速提升笔记效率:终极指南
  • 四川热轧H型钢公司、正规钢材生产供货厂商 - 四川盛世钢联营销中心
  • 西安家谱印刷厂哪家好
  • 第四十八周学习周报
  • 2026年5月江苏物业选型指南:聚焦诚信服务商的核心价值与选择逻辑 - 2026年企业推荐榜
  • Win10升级21H2后远程桌面黑屏?一个组策略设置帮你搞定(附gpedit.msc详细路径)
  • 数据库-MySQL
  • 2026年杭州靠谱的GEO优化公司,杭州这里通网络科技值得选择吗?
  • 避坑指南:用wsl --import迁移Ubuntu后,那些官网没明说的配置项(如默认用户、DNS)
  • 大众点评数据采集实战:如何破解动态字体加密实现全站爬取
  • AMD Ryzen处理器深度调试完全指南:掌握SMU系统管理单元的专业技巧
  • 深度学习落地经验:从情感分析业务中学到的5个关键教训
  • Java的背景知识及快速入门
  • 苍穹外卖day4
  • 办公场景横向测评:GPT-5.5、DeepSeek、Gemini 处理公文优劣对比
  • 刷短视频的隐形危害:你的多巴胺系统正在被“劫持”
  • 2026年琼海靠谱装修公司实力大PK,究竟哪家更值得选?
  • Wireshark抓ESP包为何有的加密有的明文?StrongSwan与Linux内核协作真相
  • 函数指针调用的两种语法及其在嵌入式C中的应用
  • 8051 XDATA分页配置与内存管理实战
  • 网站证书(cer)的安装与卸载
  • 使用TraeAI开发Web页面测试MSYS2 ucrt64 Qt MCP服务器
  • FPGA加速机器学习在地球观测中的应用与优化
  • 别再让操作系统瞎调度了!手把手教你用taskset和C代码把进程/线程‘钉’在指定CPU核上
  • MH Markets迈汇提供的技术分析工具是否齐全?使用是否方便?
  • 合肥拖拉注意力不集中医院营业时间
  • 3D Tiles 1.1:测量师的新动态
  • 给CentOS老用户的开源欧拉系统初体验:openEuler最小化安装与基础命令对比