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

代码随想录算法训练营 单调栈part03

一、柱状图中最大的矩形

84. 柱状图中最大的矩形 - 力扣(LeetCode)

单调栈很重要的性质,就是单调栈里的顺序,是从小到大还是从大到小

栈顶和栈顶的下一个元素以及要入栈的三个元素组成了我们要求最大面积的高度和宽度!!

依旧是分析清楚如下三种情况:

  • 情况一:当前遍历的元素heights[i]大于栈顶元素heights[st.top()]的情况
  • 情况二:当前遍历的元素heights[i]等于栈顶元素heights[st.top()]的情况
  • 情况三:当前遍历的元素heights[i]小于栈顶元素heights[st.top()]的情况
class Solution {public int largestRectangleArea(int[] heights) {int[] newHeight = new int[heights.length + 2];System.arraycopy(heights, 0, newHeight, 1, heights.length);newHeight[heights.length+1] = 0;newHeight[0] = 0;Stack<Integer> stack = new Stack<>();stack.push(0);int res = 0;for (int i = 1; i < newHeight.length; i++) {while (newHeight[i] < newHeight[stack.peek()]) {int mid = stack.pop();int w = i - stack.peek() - 1;int h = newHeight[mid];res = Math.max(res, w * h);}stack.push(i);}return res;}
}

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

相关文章:

  • 使用 MyBatisPlus 的注解方式进行 SQL 查询,它结合了条件构造器(Wrapper)和自定义 SQL 片段来构建查询语句。
  • Python中统计单词出现的次数,包含(PySpark方法)
  • 探讨基于IEC61499 的分布式 ISA Batch 控制系统
  • 图论16(Leetcode863.二叉树中所有距离为K的结点)
  • 【小沐学C++】C++ MFC中嵌入64位ActiveX控件(VS2017)
  • Linux常用命令—find命令大全
  • form组件的封装(element ui ) 简单版本
  • 树形DP杂题
  • Webpack使用plugin插件自动在打包目录生成html文件
  • 图像处理与计算机视觉--第一章-计算机视觉简介-10问
  • LeetCode 80. 删除有序数组中的重复项 II
  • 【前端面试题】浏览器面试题
  • PHP 生成 PDF文件
  • 讲讲项目里的仪表盘编辑器(一)
  • 解决方案 | 如何构建市政综合管廊安全运行监测系统?
  • JCEF中js与java交互、js与java相互调用
  • 9.20 校招 实习 内推 面经
  • 基于JAVA+SpringBoot+Vue+协同过滤算法+爬虫的前后端分离的租房系统
  • 【Android Framework系列】第16章 存储访问框架 (SAF)
  • Antdesign 4中让分页组件居中显示的方法
  • 【笔记】ubuntu 20.04 + mongodb 4.4.14定时增量备份脚本
  • c++实现的一个定时器实例
  • Python线程和进程
  • 算法 寻找峰值-(二分查找+反向双指针)
  • 【数据结构】—交换排序之快速排序究极详解,手把手带你从简单的冒泡排序升级到排序的难点{快速排序}(含C语言实现)
  • 【c#-Nuget 包“在此源中不可用”】 Nuget package “Not available in this source“
  • 【数据结构】二叉树之堆的实现
  • 电工-三极管输入输出特性曲线讲解
  • 深入解析容器与虚拟化:技术、对比与生态
  • 制作游戏demo的心得