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

接雨水——单调栈(python)

思路:利用栈的先进后出,后进先出特性。

使用单调栈,入栈下标。当遇到更高的墙时,说明形成了凹槽,弹出栈元素,开始计算接水量。每次弹出栈后,记得要判空,因为这里用的是大于,要注意和求柱状图中最大矩形区别开。

def rain(nums): #单调栈 stack=[] #先进后出特性 res=0 for i in range(len(nums)): while stack and nums[i]>nums[stack[-1]]: #当遇到更高的墙,说明形成了凹槽 tmp=stack.pop() if not stack: #因为判断的是大于,所以每弹出一次,需要判断是否空 break left=stack[-1] #左边的墙 h=nums[tmp] #当前高度 w=i-left-1 #宽度 curHeight=min(nums[left],nums[i])-h #接水量取决于较小高度 res+=w*curHeight #接水量 stack.append(i) print(res) return res def main(): line=input() nums=list(map(int,line.split())) rain(nums) if __name__=="__main__": main()
http://www.jsqmd.com/news/611691/

相关文章:

  • 关于Java EE应用中xml解析类的问题
  • 使用Phi-4-mini-reasoning优化算法逻辑:以LSTM时间序列预测为例
  • MiniCPM-o-4.5-nvidia-FlagOS进阶:使用Matlab进行模型输出数据的可视化分析
  • 2026年质量好的仿棉天鹅绒/金丝绒天鹅绒/经编天鹅绒/平板天鹅绒公司口碑哪家靠谱 - 品牌宣传支持者
  • 亲测8款AI写论文神器,维普查重一把过,零AIGC痕迹 - 麟书学长
  • JointJS部署与打包终极指南:从开发到生产环境的完整实践
  • WeKnora新手必看:无需代码,三步创建属于你的即时知识问答系统
  • 使用Phi-4-mini-reasoning进行软件测试用例智能生成与面试题解析
  • FFmpeg在RK3588上的完整移植教程:从交叉编译到CMake集成
  • Flutter Engine热重载原理:开发效率提升的黑科技
  • Hypersistence Utils数组类型深度解析:PostgreSQL ARRAY到Java List的完美映射
  • 2026年昆山执行案件口碑好的律师推荐及选择建议 - 品牌排行榜
  • 百度网盘直连地址解析工具:告别限速的终极方案
  • Pixel Script Temple Node.js后端服务部署与监控脚本生成
  • 终极指南:Kanboard监控告警配置 - 打造异常情况及时响应机制
  • EcomGPT-7B电商数据爬虫实战:Python自动化采集与清洗方案
  • 2. ES6中数组新增了哪些扩展?
  • 3个步骤实现BetterGenshinImpact多账号协同管理:高效掌控多角色游戏体验
  • IOSSecuritySuite 运行时Hook检测:Flex等工具的克星
  • OpenClaw对话式编程:千问3.5-27B辅助Python脚本调试
  • 在Ubuntu 22.04上为你的J-Link适配OpenOCD:从源码编译到成功连接实战记录
  • 3大场景解锁显卡潜能:NVIDIA Profile Inspector开源工具性能调优实战指南
  • Mercure 认证授权终极指南:如何构建企业级安全的实时通信系统
  • 加密货币数据标准化:Cryptofeed如何统一50+交易所的数据格式
  • NVIDIA Profile Inspector:开源显卡性能调优工具,游戏玩家与创作者的深度优化解决方案
  • 5分钟掌握哔哩下载姬Downkyi:免费批量下载B站视频的完整教程
  • Symfony Translation Contracts终极指南:避免常见的10个国际化陷阱
  • CH343芯片驱动安装全攻略:从Windows到Linux再到MacOS,一篇搞定所有系统
  • 十大AI写作工具迎来专业测评,AIGC论文助手从核心功能维度切入,深度解析各工具的实战表现与性能差异。
  • ChatTTS语音导航优化:车载系统更人性化播报