leetcode 84. 柱状图中最大的矩形
84. 柱状图中最大的矩形
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
求在该柱状图中,能够勾勒出来的矩形的最大面积。
示例 1:

输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的矩形为图中红色区域,面积为 10
示例 2:
输入: heights = [2,4] 输出: 4
思路:
/*
单调递减栈
遍历到的数组元素大于或等于栈顶元素,压入栈
遍历到的数组元素小于栈顶元素,取出栈顶元素为middle,st.pop(),heights[i] = right; left = st.top();
h = height[middle];
w = i-st.top()-1;
遍历到的数组元素小于栈顶元素的判断是持续性的判断
result = max(h*w,result);
*/
代码:
class Solution {
public:int largestRectangleArea(vector<int>& heights) {/*单调递减栈遍历到的数组元素大于或等于栈顶元素,压入栈遍历到的数组元素小于栈顶元素,取出栈顶元素为middle,st.pop(),heights[i] = right; left = st.top();h = height[middle];w = i-st.top()-1;遍历到的数组元素小于栈顶元素的判断是持续性的判断result = max(h*w,result); */int result = 0;stack<int>st;st.push(0);heights.insert(heights.begin(),0);heights.push_back(0);for(int i = 1;i<heights.size();i++){if(heights[i]>heights[st.top()]){st.push(i);}else if(heights[i]==heights[st.top()]){st.push(i);}else{while(!st.empty()&&heights[i]<heights[st.top()]){int middle = st.top();st.pop();if(!st.empty()){int right = i;int left = st.top();int h = heights[middle];int w = right-left-1;result = max(result,h*w);}}}st.push(i);}return result;}
};
还有很多瑕疵,还需继续坚持!
相关文章:
leetcode 84. 柱状图中最大的矩形
84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights [2,1,5,6,2,3] 输出:10 解释&…...
ubuntu 安装 gnome 安装 xrdp
先安装xrdp 更新 apt-get sudo apt-get update && apt-get upgrade安装图形包 apt-get install xubuntu-desktop安装 xrdp apt-get install xrdp安装 xfce4 apt-get install xfce4配置 xfce4 Add xfce to the xfce desktop window manager autorun by fixing the …...
微信小程序——后台交互
目录 后台准备 pom.xml 配置数据源 整合mtbatis 前后端交互 method1 method2 后台准备 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org…...
3D模型如何添加表面贴图?
1、模型表面贴图介绍 模型表面贴图(Texture Mapping)是一种将纹理映射到三维模型表面的技术,用于增加模型的细节和真实感。它通过在模型的每个表面点上应用纹理坐标,并将纹理像素与模型的对应点进行匹配,使得模型表面…...
C语言之函数详解
目录 函数的定义 函数的调用 变量的存储类型 auto自动变量 extern外部变量 static静态变量 register寄存器变量 函数的定义 在C语言中,函数是一段可重复使用的代码块,用于执行特定的任务。函数的定义包括函数的声明和函数体两个部分。 函数的声…...
华纳云:mysql创建触发器报错的原因及解决方法是什么
在 MySQL 中创建触发器时可能会出现错误,这些错误通常是由于多种原因引起的,包括语法错误、权限问题、表结构问题等。以下是一些常见的创建触发器报错的原因和相应的解决方法: 1. 语法错误: 原因: 创建触发器的SQL语句…...
C++笔记之初始化二维矩阵的方法
C笔记之初始化二维矩阵的方法 —— 2023年5月20日 上海 code review! 文章目录 C笔记之初始化二维矩阵的方法一.常见方法1. 使用数组2. 使用向量3. 使用数组的动态分配4. 使用嵌套的 std::vector 并使用resize方法5. 初始化固定大小的 std::array 二.C中使用vector初始化二维矩…...
ArrayList与List的层级关系及ArrayList解析
List与ArrayList的关系 List List是一个接口,不能直接实例化。如果要使用必须去实例化List的实现类——ArrayList和LinkedList站在数据结构的角度看,List就是一个线性表。常见的线性表:顺序表、链表、栈、队列等 线性表 线性表是n个具有相…...
智慧公厕设备选型攻略,打造智能化便利生活体验
智慧公厕设备的选型对于打造智能化便利生活体验起着至关重要的作用。在不断提升城市品质的背景下,智慧公厕已成为城市建设中的一项重要内容。在选购智慧公厕设备时,我们需要考虑到不同版本的功能要求,确保公厕设备的质量和性能。本文以智慧公…...
TCP 协议的可靠传输机制是怎样实现的?
TCP 协议是一种面向连接的、可靠的、基于字节流的传输层协议。 1 它通过以下几种方法来保证数据传输的可靠性: 检验和:TCP 在发送和接收数据时,都会计算一个检验和,用来检测数据是否在传输过程中发生了错误或损坏。如果检验和不匹…...
Antv G6入门之旅--combo图
目录 什么是AntV G6 G6 的特性 G6 文档 安装 1 在项目中使用 NPM 包引入 2 在 HTML 中使用 CDN 引入 使用 Step 1 创建容器 Step 2 数据准备 Step 3 创建关系图 Step 4 配置数据源,渲染 React 中使用 G6 Combo图 什么是AntV G6 G6 是一个图可视化引擎…...
聊聊分布式架构09——分布式中的一致性协议
目录 01从集中式到分布式 系统特点 集中式特点 分布式特点 事务处理差异 02一致性协议与Paxos算法 2PC(Two-Phase Commit) 阶段一:提交事务请求 阶段二:执行事务提交 优缺点 3PC(Three-Phase Commit&#x…...
探索流视频的发送
1.网络连接 2.主设备将某处视频开始的视频数据发送给从设备。 之前有读取本地视频并播放的demo,所以可以先测试网络连接的问题。 先用模拟器进行模拟吧。方便进行测试。 是的,可以使用Android设备使用上述库或框架来构建实时Web应用程序。虽然这些库和框架在Java服…...
[ACTF2020 新生赛]Include 1
题目环境:超链接,点进去看看你能找到flag吗?除了这些网页什么都没有,但是不当紧,因为我们有一双善于发现的眼睛👀F12瞅瞅无,并无其他等等URL看了吗?发现存在一个参数file,…...
教师必备宝藏,强烈推荐
亲爱的教师朋友们,你们是不是在为学期末成绩查询而头疼呢?一学期下来,成堆的试卷和成绩单,还有学生家长的各种咨询,让人应接不暇。现在,我给你们分享一个教师必备的宝藏,让你们的成绩查询工作变…...
「北大社送书」学习MATLAB—从算法到实战
MATLAB科学计算从入门到精通 一句话推荐书籍特色内容简介书籍概览 从代码到函数,从算法到实战,从问题到应用,由浅入深掌握科学计算方法,高效解决实际问题。 一句话推荐 科学计算基础入门,高效解决实际问题。 书籍特色…...
clion安装C++远程linux开发并调试 从装centos虚拟机到完美开发调试
下载镜像 阿里云镜像 从vmware上安装虚拟机并提权开放ssh 更新编译环境 一般 gcc gdb 版本都是比较低的,适配不了clion的最低要求。 升级gdb参考博客 升级gcc参考博客 安装CMAKE 官方的源使用wget即可下载 未找到openssl的解决办法 注意版本,又踩个…...
Android笔记
目录 触摸事件java弱引用WorkerThread注解NonNull注解camera.setFrameProcessingFormat(ImageFormat.YUV_420_888);YUV_420_888的字节数据长啥样YUV_420_888的字节数组长啥样 触摸事件 java弱引用 创建对象的弱引用,在没有强引用指向改对象的情况下,垃圾…...
Java虚拟机内存区域、异常、垃圾收集器
java虚拟机 java内存区域 jvm的主要组成部分及作用 主要包含两个子系统和两个组件 子系统 类加载器(Class loader):根据给定的类路径来装载class文件到运行时数据区 …...
深入理解JVM虚拟机第十三篇:详解JVM中的程序计数器
文章目录 一:程序计数器 1:概念 2:官方说法 3:图解 4:特点...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
