【LeetCode】84. 柱状图中最大的矩形(困难)——代码随想录算法训练营Day60

题目链接:84. 柱状图中最大的矩形

题目描述

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

示例 1:

输入:heights = [2,1,5,6,2,3]
输出:10
解释:最大的矩形为图中红色区域,面积为 10

示例 2:

输入: heights = [2,4]
输出: 4

提示:

  • 1 <= heights.length <=105
  • 0 <= heights[i] <= 104

文章讲解:代码随想录

视频讲解:单调栈,又一次经典来袭! LeetCode:84.柱状图中最大的矩形_哔哩哔哩_bilibili

题解1:单调栈

思路:以数组中其中一个元素为基准画矩形,矩形的底为其左右第一个比他矮的柱子之间的部分,高为其高度。遍历数组并构建单调栈,得出答案。

/*** @param {number[]} heights* @return {number}*/
var largestRectangleArea = function(heights) {let res = 0;const stack = [];heights.push(0); // 尾部加0for (let i = 0; i < heights.length; i++) {while (stack.length > 0 && heights[stack[stack.length - 1]] > heights[i]) {const mid = stack.pop();const w = i - (stack.length > 0 ? stack[stack.length - 1] : -1) - 1;const h = heights[mid];res = Math.max(res, w * h);}if (stack.length > 0 && heights[stack[stack.length - 1]] === heights[i]) {stack.pop();}stack.push(i);}return res;
};

分析:时间复杂度为 O(n),空间复杂度为 O(n)。

收获

练习单调栈解又一道单调栈的经典题目,使用单调栈可以找出数组元素左右第一个比它小或比它大的值。

代码随想录一刷完成打卡!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/745013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT的安全风险控制

ChatGPT的安全风险控制涉及多个方面&#xff0c;旨在确保模型在使用过程中的数据安全和防止潜在风险。以下是一些关键的风险控制措施&#xff1a; 数据保护&#xff1a; 敏感数据脱敏&#xff1a;对于涉及个人隐私、商业机密等敏感信息&#xff0c;应进行脱敏处理&#xff0c;…

输入url后,触发的前端相关事件

在浏览器输入 URL 后&#xff0c;通常会触发以下一系列事件和操作&#xff1a; URL 解析&#xff1a;浏览器会解析用户输入的 URL&#xff0c;包括协议&#xff08;如 http:// 或 https://&#xff09;、主机名、端口号&#xff08;如果有&#xff09;、路径和查询参数等。 DN…

msfconsole数据库连接不了的问题【已解决】

msfconsole数据库连接 1.msf数据库端口 msf使用的是postgresql&#xff0c;这个数据库默认端口是5432 单个模块的使用可以不需要数据库&#xff0c;但是模块与模块之间需要沟通的时候就会用到数据库。 2.查看msf数据库连接状态 db_status #msf内部查看systemctl status p…

HTML视频笔记

学习arm开发板&#xff0c;涉及到网页HTML PHP什么的&#xff0c;简单看个视频学习下 HTML&#xff5c;超简单HTML入门教程 https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element ​​​​​​vscode需要的libc6等需要的版本高​​​​​​ 为了安装vscode&#xff0c;将…

Spring Cloud Alibaba微服务从入门到进阶(四)(服务发现-Nacos )

Nacos是服务发现组件和配置服务器 作为服务发现注册组件Nacos Server 搭建Nacos Server 下载、启动 访问nacos,默认 用户/密码 nacos/nacos 将应用注册到nacos 加依赖 在SpringCloud子项目中&#xff0c;Feign是属于OpenFeign&#xff0c;Sentinel、Nacos是属于alibaba的&…

FX110网:1月美国零售货币资金环比上升2.61%,嘉盛环比上升1.86%

美国商品期货交易委员会&#xff08;CFTC&#xff09;发布的最新月度报告显示&#xff0c;2024年1月零售货币存款与上月相比上升2.61%。 这份报告涵盖在美国运营的注册零售货币对交易商&#xff08;RFED&#xff09;和经纪自营商。包括嘉信理财&#xff08;CHARLES SCHWAB Futu…

【安装mysql】centos7 安装mysql

文章目录 1.卸载不用的环境2.获取mysql官方yum源3.开始安装4.常规登录4.1方法一&#xff1a;【博主可以】4.2方法二&#xff1a;直接用client登录4.3方法三&#xff1a;修改配置文件 5.设置配置文件5.1配置my .cnf5.2开机自启动 1.卸载不用的环境 查看有无mysql/mariadb ps ax…

python--类与面向对象-3

1、类的名称空间和对象的名称空间。&#xff08;Namespace&#xff09; &#xff08;1&#xff09;创建一个类就会产生一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 &#xff08;2&#xff09;创建一个对象就会创建一个对象的名称空间,存放着对象的名字…

天地图全国幼儿园数据下载与处理分析

概述 在看天地图服务资源的时候看到有个“幼儿园”的数据&#xff0c;好奇点开看了下&#xff0c;下载下来数据差看了下&#xff0c;数据质量还不错。本篇文章给大家分享一下这个数据的处理以及一些简单的统计分析结果。 数据下载 通过地址https://service.tianditu.gov.cn/…

嵌入式方向还有希望吗?

我刚开始学习&#xff0c;也不知道我定位的是单片机工程师&#xff0c;嵌入式工程师职位的。 我只知道电子工程师&#xff0c;这个职位其实偏硬件&#xff0c;很多岗位需求是硬件设计&#xff0c;PCB设计&#xff0c;还要懂焊接、各种仪器仪表使用&#xff0c;还有些需要懂单片…

Git提交代码进入coding

安装Git后建一个文件在文件里右键点击Git Bash使用命令配置用户名和邮箱git config --global user.name "你的用户名"和git config --global user.email "你的邮箱"命令git init来初始化&#xff0c;自动将当前仓库设置为master创建一个项目&#xff08;一…

C#操作像素替换图片中的指定颜色

待处理的图片&#xff0c;其特征是包含有限数量颜色&#xff0c;不同的颜色相互交叉使用&#xff0c;相同颜色并未完全连贯&#xff0c;需要将图片中的指定颜色替换为另一颜色。虽然很多图片处理工具都支持类似操作&#xff0c;最后还是自己动手编写简单的处理程序。   程序的…

【 TypeScript 】对TypeScript中类的理解?应用场景?

1. 是什么 类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础 类是一种用户定义的引用数据类型&#xff0c;也称类类型 传统的面向对象语言基本都是基于类的&#xff0c;JavaScript基于原型的方式让开发者多了很多理解成本在ES6之后&#xff0…

C++ 生成随机数 srand 和 time 函数

C 生成随机数&#xff0c;通常采用 srand 和 time 函数来设置随机数种子。 一、 srand 函数&#xff1a; srand 函数用于设置伪随机数生成器的种子。伪随机数生成器是一个算法&#xff0c;它根据特定的种子生成看似随机的数值序列。在每次程序运行时&#xff0c;如果使用相同…

4种小众的能力,帮你更好地适应未来

新年伊始&#xff0c;又是一个全新的开始。 未来的社会究竟需要什么样的能力&#xff1f;这已经是一个很老的话题&#xff0c;已经有许许多多讨论了。但这其中&#xff0c;可能有一些是容易被人忽略的&#xff0c;或者不容易被注意到的。 我想跟你一起分享&#xff0c;我对这个…

python面向对象练习3

第一题 这是一个电商网站的库存管理问题&#xff0c;我们需要管理商品的库存信息。每个商品都有商品编号、名称和库存数量。 商品编号 商品名称 数量1 手机 102 电视 53 耳机 20现在有一个用户购买了商品编号为1的商品5件&#xff0c;需…

前端代码整洁与规范之CSS篇

一、代码整洁 1. 命名规范 CSS 类名的命名应该简洁清晰&#xff0c;能够准确描述元素的作用。避免使用无意义的名称&#xff0c;例如“a”、“b”等&#xff0c;而应该使用有意义的英文单词或单词缩写。同时&#xff0c;也要避免使用驼峰命名法和下划线命名法混杂使用&#x…

十大经典排序之选择排序

文章目录 概要整体架构流程代码实现小结 概要 选择排序是一种简单直观的排序算法&#xff0c;无论什么数据进去都是 O(n) 的时间复杂度。所以用到它的时候&#xff0c;数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 整体架构流程 首先在未排序序列中找到…

NAND闪存市场格局或将发生变化

随着供应商有效减产&#xff0c;内存价格开始反弹&#xff0c;半导体内存市场终于呈现复苏迹象。从市场动态和需求变化来看&#xff0c;作为两大内存产品之一的NAND闪存正经历新一轮变革。 供应商不断采取行动&#xff0c;提高价格并调整产能利用率。自2023年第三季度以来&…

Live800:企业如何与客户建立长期、稳定关系,实现双赢

在当今的商业环境中&#xff0c;企业不仅需要吸引新客户&#xff0c;更需要与现有客户建立长期、稳定的关系。这样的关系可以带来持续的收入&#xff0c;提高企业的利润性。然而&#xff0c;如何建立和维护这样的关系呢&#xff1f;文章将从三个方面进行深入探讨&#xff1a;提…