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

【Leetcode 42】 接雨水-单调栈解法

 

基础思路:

维持栈单调递减,一旦出现元素大于栈顶元素,就可以计算雨水量,同时填坑(弹出栈顶元素)

需要注意:

单调栈通常保存的是下标,用于计算距离

public static int trap2(int[] height) {int result = 0;int n = height.length;LinkedList<Integer> stack = new LinkedList<>();for (int i = 0; i < n; i++) {if (stack.isEmpty() || height[i] < height[stack.getFirst()]) {//栈为空或者保持单调,压栈stack.addFirst(i);} else {//执行出栈操作直到栈单调,出栈过程相当于填水坑操作,同时记录当前雨量while (height[i] > height[stack.getFirst()]) {int elm = stack.pop();if (stack.isEmpty()) {break;}int wall = height[stack.getFirst()] < height[i] ? height[stack.getFirst()] : height[i];result += (wall - height[elm]) * (i - stack.getFirst() - 1);}//栈恢复单调后,压栈stack.addFirst(i);}}return result;}

http://www.lryc.cn/news/342227.html

相关文章:

  • Python 贪吃蛇
  • 计算机网络 2.4差错检验与校正
  • uniapp遍历数组对象的常见方法
  • Milvus向量数据库(一)Milvus存储byte[]类型源向量数据
  • Jupyter Notebook魔术命令
  • python基础---生成器
  • wangEditor 富文本详解
  • 文献速递:深度学习医学影像心脏疾病检测与诊断--从SPECT/CT衰减图中深度学习冠状动脉钙化评分提高了对重大不良心脏事件的预测
  • Java多线程:常见的线程的创建方法及Thread类详解
  • 一招搞定生产管理
  • 学习CSS3,实现红色心形loading特效
  • 深度学习之基于Matlab神经网络的活体人脸和视频人脸识别系统
  • 充电桩测试:负载箱的重要性
  • 贪心算法、Dijkstra和A*类路径搜索算法
  • Debian是什么?有哪些常用命令
  • 万兴PDF专家 PDFelement Pro v10.3.8 破姐版!
  • Ubuntu22.04 私钥登录
  • Java_JVM_JVMs
  • Linux系统编程之基本指令
  • [1702]java旅游资源网上填报系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • 【Flask 系统教程 3】请求与响应
  • jsp校园商城派送系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • 【Linux】System V 共享内存
  • 拼多多标准推广怎么玩
  • HFSS学习-day2-T形波导的优化设计
  • 贪吃蛇小游戏(c语言)
  • 多商户Docker Supervisor进程管理器部署
  • Vue--》从零开始打造交互体验一流的电商平台(一)
  • uniapp 自定义相机插件(组件版、缩放、裁剪)组件 Ba-CameraView
  • 如何在Python中生成随机密码?