leetcode热题100.柱状图中最大的矩形

Problem: 84. 柱状图中最大的矩形

文章目录

  • 题目
  • 思路
  • 复杂度
  • Code

题目

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

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

示例 1:
在这里插入图片描述

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

示例 2:
在这里插入图片描述

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

思路

对于一根柱子x,其高为h.假如我们知道了他左边的第一根小于他的柱子的位置l和邮编第一个小于的高度的柱子r,那么我们很容易求得他的最大面积为: s = ( r − l − 1 ) ∗ h s = (r-l-1) * h s=(rl1)h

根据这一性质,我们采用单调栈的方法,在栈中保留第一个比当前元素小的元素的索引,所有大于当前元素的索引都将被弹出;如果栈不为空,说明存在这样一个索引,其对应的元素值小于当前元素,我们记录他。

我们分别从左往右和从右往左计算两遍,最后得出答案

复杂度

时间复杂度:

O ( n ) O(n) O(n)

空间复杂度:

O ( n ) O(n) O(n)

Code

class Solution:def largestRectangleArea(self, heights: List[int]) -> int:n = len(heights)left = [-1] * nst = []for i,x in enumerate(heights):while st and heights[st[-1]] >= x:st.pop()if st:left[i] = st[-1]st.append(i)right = [n] * nst.clear()for i in range(n-1,-1,-1):x = heights[i]while st and heights[st[-1]] >= x:st.pop()if st:right[i] = st[-1]st.append(i)ans = 0for h,l,r in zip(heights,left,right):ans = max(ans,h*(r-l-1))return ans

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

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

相关文章

按需自动加载 Element Plus 实测

按需加载是一种优化策略,可以提高前端应用程序的性能、用户体验和可维护性。在使用 Element UI 或其他大型 UI 组件库时,通过按需加载可以最大程度地发挥其优势,确保应用程序的性能和可扩展性得到有效的管理;其优势有:…

ES学习日记(四)-------插件head安装和一些配套插件下载

前言 接上节,第三方插件选择了时间久,功能丰富,长得丑的head,head 插件在ES 5版本以前开箱即用非常简单,ES 5版本以后需要运行在node环境下,所以我们要先准备一下环境 一.安装Git 不装了,明儿再说,看会儿手机准备下班!!!!!!!!!

MySQL 架构

MySQL 是一个流行的开源关系型数据库管理系统(RDBMS),广泛应用于 Web 应用程序和其他各种类型的软件系统中。MySQL 的架构是其设计和实现的基础,了解 MySQL 的架构可以帮助我们更好地理解其工作原理和性能特点。 MySQL 的架构主要…

MySQL安装环境配置,工具(超详细讲解)

一、什么是MySQL MySQL与SQL server一样都是关系型数据库管理系统,起初它是由瑞典的MySQL AB公司开发的,该公司于2008年被Sun公司收购。之后,Sun公司在2009年被Oracle公司收购。现在MySQL是Oracle公司的重要产品之一。 1、MySQL版本 针对不…

python实战之基础篇(二)

一. 定义函数 二. 调用函数 1. 使用位置参数调用函数 2. 使用关键字参数调用函数 三. 参数的默认值 四. 可变参数 1. 基于元组的可变参数 2. 基于字典的可变参数 五. 函数中变量的作用域 global 可以将局部变量提升为全局变量 六. 过滤函数filter() 七. 映射函数map() 八. la…

Elasticsearch 和 Kibana 8.13:简化 kNN 和改进查询并行化

作者:Gilad Gal, Tyler Perkins, Srikanth Manvi, Aris Papadopoulos, Trevor Blackford 在 8.13 版本中,Elastic 引入了向量搜索的重大增强,并将 Cohere 嵌入集成到其统一 inference API 中。这些更新简化了将大型语言模型(LLM&a…

【阿里近100人+花27.1万造的】中文医学数据集 ChineseBLUE 分析

中文医学数据集 ChineseBLUE 分析 基本介绍数据集分类构造成本 论文:https://arxiv.org/pdf/2106.08087v5.pdf 链接:https://github.com/alibaba-research/ChineseBLUE 基本介绍 需要注意的是,中文生物医学文本在语言上与英文不同&#xf…

SQLAlchemy使用MetaData对象与模型类操作数据库表

MetaData 对象和模型类在使用 SQLAlchemy 与 数据库进行交互时,有一些不同之处。使用 MetaData 对象,可直接操作数据库表结构。它允许您定义表名、列名、数据类型等。然后,使用 create_all 方法创建这些表。这种方法更适合在需要完全控制数据…

POSTGRESQL中时间戳的奥秘timestamptz

哈喽,大家好,我是木头左! 一、前言 在日常的数据库操作中,经常会遇到各种时间相关的数据类型,如DATE、TIME、TIMESTAMP等。这些时间类型的处理方式和精度差异,直接影响到对数据的查询和分析结果。今天&…

基于Echarts的超市销售可视化分析系统(数据+程序+论文)

本论文旨在研究Python技术和ECharts可视化技术在超市销售数据分析系统中的应用。本系统通过对超市销售数据进行分析和可视化展示,帮助决策层更好地了解销售情况和趋势,进而做出更有针对性的决策。本系统主要包括数据处理、数据可视化和系统测试三个模块。…

喝酸奶能长寿么?

进入二十一世纪,仍然有两件事情不能祛魅。一个是钻石恒久远一颗永流传的高明传销策略;一个是关于酸奶对人体的各种好处的大肆鼓吹。 我们依照最早最先的原则翻查酸奶有益健康的说法的起源。 1899年9月,俄罗斯微生物学家及免疫学家梅契尼科夫…

29.Python从入门到精通—Python3 面向对象继承 多继承 方法重写 类属性与方法

29.从入门到精通:Python3 面向对象继承 多继承 方法重写 类属性与方法 继承多继承方法重写类属性与方法 继承 在面向对象编程中,继承是指通过继承现有类的属性和方法来创建新类的过程。新类称为子类(或派生类),现有类…

ES学习日记(一)-------单节点安装启动

基于ES7.4.1编写,其实一开始用的最新的8.1,但是问题太多了!!!!不稳定,降到7.4 下载好的安装包上传到服务器或虚拟机,创建ES目录,命令mkdir -p /路径xxxx 复制安装包到指定路径并解压: tar zxvf elasticsearch-8.1.0-linux-x86_64.tar.gz -C /usr/local/es/ 进入bin目录安装,命…

工业智能物联网关如何助力工业防震减灾

地震灾害难以预料,一旦发生往往就损失重大。对于工业领域而言,地震灾害的影响不仅仅是对人员安全的威胁,还包括对生产设施的破坏、生产进程的中断以及伴生的持续性经济损失。 随着5G、大数据、物联网技术的发展,面向工业领域构建一…

CAPL如何使用socket套接字实现TCP通信(数据传输)

书接上回《CAPL如何使用socket套接字实现TCP通信(建立连接)》,当TCP建立连接后,就可以传输数据了。 不管是client还是server,都是使用相同的函数传输应用层数据。 tcpSend(clientSocket, "12345", 5);但这里有一点值得注意:server端传输数据的socket是serverD…

高效批量管理文件,轻松实现文件批量复制并覆盖相同文件名,轻松管理文件

亲爱的用户们,您是否在批量复制文件时常常被相同文件名困扰,手动一个个改名繁琐又费时?现在,我们为您推出一款智能的文件批量改名工具,帮助您轻松处理复制时的相同文件名,让文件管理更从容! 首…

洗车行业在线预约提前下单小程序源码系统 带完整的安装代码包以及搭建教程

随着人们生活水平的提高,汽车保有量不断增加,洗车服务市场需求也日益旺盛。然而,传统的洗车服务方式往往存在排队等待时间长、服务质量不稳定等问题,给消费者带来了不便。因此,开发一款在线预约提前下单小程序&#xf…

基于java+springboot+vue实现的宠物美容机构CRM系统(文末源码+Lw+ppt)23-364

摘要 随着网络科技的不断发展以及人们经济水平的逐步提高,网络技术如今已成为人们生活中不可缺少的一部分,而信息管理系统是通过计算机技术,针对用户需求开发与设计,该技术尤其在各行业领域发挥了巨大的作用,有效地促…

C语言--编译和链接

1.翻译环境 计算机能够执行二进制指令,我们的电脑不会直接执行C语言代码,编译器把代码转换成二进制的指令; 我们在VS上面写下printf("hello world");这行代码的时候,经过翻译环境,生成可执行的exe文件&…

笔记81:在服务器中运行 Carla 报错 “Disabling core dumps.”

背景:使用实验室提供的服务器配 Carla-ROS2 联合仿真的实验环境,在安装好 Carla 后运行 ./CarlaUE4.sh 但是出现 Disabling core dumps. 报错,而且不会出现 Carla 的窗口; 解决:运行以下命令 ./CarlaUE4.sh -carl…