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

[Java][Leetcode hard] 42. 接雨水

没做出来,看的官解。

1. 动态规划的思想

当位于i处,i处能接水的体积=左侧最高点和右侧最高点的最小值(水桶原理)-自身的高度

classSolution{publicinttrap(int[]height){intsum=0;intn=height.length;int[]leftMax=newint[n];leftMax[0]=height[0];for(inti=1;i<n;i++){leftMax[i]=Math.max(leftMax[i-1],height[i]);}int[]rightMax=newint[n];rightMax[n-1]=height[n-1];for(inti=n-2;i>=0;i--){rightMax[i]=Math.max(rightMax[i+1],height[i]);}for(inti=0;i<n;i++){sum+=Math.min(rightMax[i],leftMax[i])-height[i];}returnsum;}}

2. 采用单调栈计算

只要有凹槽就可以储水,首先将元素放入单调栈中,然后循环数组与栈顶对比。
此时:如果该元素(相当于右侧)大于栈顶的元素(相当于底部)再加上栈顶的下一个元素(相当于左侧,单调栈,栈顶元素一定小于第二个元素)就形成了凹槽。

classSolution{publicinttrap(int[]height){intn=height.length;intres=0;Deque<Integer>stack=newArrayDeque<>();for(inti=0;i<n;i++){intright=i;while(!stack.isEmpty()&&height[right]>height[stack.peek()]){intbottom=stack.pop();if(stack.isEmpty()){// 左侧无元素,无法形成凹槽break;}intleft=stack.peek();intw=right-left-1;inth=Math.min(height[right],height[left])-height[bottom];res+=w*h;}stack.push(i);}returnres;}}

3. 采用双指针

按照动态规划的思路,只需要维护leftMax,rightMax两个变量就可以将空间降至O(1)

classSolution{publicinttrap(int[]height){intres=0;intleft=0,right=height.length-1;intleftMax=0,rightMax=0;while(left<right){leftMax=Math.max(leftMax,height[left]);rightMax=Math.max(rightMax,height[right]);if(leftMax<rightMax){// 根据水桶原理,leftMax比rightMaxx小,此时,无论右边多大,水超过leftMax就会溢出。res+=leftMax-height[left++];}else{res+=rightMax-height[right--];}}returnres;}}
http://www.jsqmd.com/news/660754/

相关文章:

  • 2026年硅油膜厂家推荐排行榜:不错的硅油膜生产企业/靠谱的硅油膜批发厂家/值得信赖的硅油膜生产商 - 品牌策略师
  • SensitivityMatcher:3D游戏鼠标灵敏度转换的终极免费方案
  • 告别混乱!用mplfinance的Panels功能(v0.12.6a3)优雅绘制MACD等多指标子图
  • OpenRGB:跨平台RGB灯光统一控制终极指南,告别多厂商软件困扰
  • 技术深度解析:libwdi如何重新定义Windows USB驱动安装架构
  • GetQzonehistory:简单三步永久备份你的QQ空间青春记忆
  • 潮玩电商演进法则:用互动生态打破留存瓶颈,盲盒V6MAX源码系统小程序与海外盲盒源码深度解构 - 壹软科技
  • 别再只盯着LoRaWAN了!聊聊智能水表里那颗‘小磁铁’:干簧管选型与防误触实战指南
  • 3步解锁《鸣潮》120帧:WaveTools游戏性能优化终极指南
  • 半包装潢公司
  • 【Nginx专项】高级进阶架构篇-Location、Rewrite及HTTPS
  • git仓库如果没有远程仓库,会存在哪?
  • 如何通过本地化英雄联盟工具提升你的游戏效率:LeagueAkari完整指南
  • 资源分析报告 - 版本: v1.2.3
  • 智能车竞赛必备:手把手教你用ITR9909+BC517改造节能信标(附完整电路图)
  • 5分钟掌握抖音音频批量提取:开源工具一键搞定创作素材难题
  • MaaYuan:终极智能游戏自动化助手,3分钟解放你的游戏时间
  • Z-Image-Turbo应用场景:快速生成社交媒体配图、Logo设计、创意海报
  • Calibre中文路径终极解决方案:三步告别拼音路径,让电子书管理更高效
  • fre:ac音频转换器:免费开源的终极音频处理解决方案
  • 从Unity游戏中提取Live2D资源的终极指南:UnityLive2DExtractor全解析
  • Fish Speech 1.5中英混合语音合成教程:电商商品描述自动配音实战
  • Compose Modifier 属性顺序对布局的影响
  • 如何用AzurLaneAutoScript实现碧蓝航线全自动托管?终极免费脚本指南
  • ROS导航避坑:你的AMCL初始位姿设对了吗?对比RVIZ 2D Pose与launch文件两种方法
  • VexRiscv多核SMP架构:构建高性能RISC-V处理器集群的FPGA友好方案
  • 2026创业风口:格行3.0代理招商政策制度(官方完整版张总直招)——零门槛物联网轻创业 - 格行官方招商总部
  • AKShare终极指南:如何快速获取2000+财经数据接口的完整教程
  • BetterNCM安装器:3分钟解锁网易云音乐终极插件生态
  • 如何高效使用Umi-OCR:5个实战技巧提升文字识别效率