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

代码随想录算法训练营第23期day60|84.柱状图中最大的矩形

一、84.柱状图中最大的矩形

力扣题目链接

42接雨水 是找每个柱子左右两边第一个大于该柱子高度的柱子,而本题是找每个柱子左右两边第一个小于该柱子的柱子。

本题是要找每个柱子左右两边第一个小于该柱子的柱子,所以从栈头(元素从栈头弹出)到栈底的顺序应该是从大到小的顺序

主要就是分析清楚如下三种情况:

  • 情况一:当前遍历的元素heights[i]大于栈顶元素heights[st.top()]的情况
  • 情况二:当前遍历的元素heights[i]等于栈顶元素heights[st.top()]的情况
  • 情况三:当前遍历的元素heights[i]小于栈顶元素heights[st.top()]的情况
// 版本一
class Solution {
public:int largestRectangleArea(vector<int>& heights) {int result = 0;stack<int> st;heights.insert(heights.begin(), 0); // 数组头部加入元素0heights.push_back(0); // 数组尾部加入元素0st.push(0);// 第一个元素已经入栈,从下标1开始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.pop(); // 这个可以加,可以不加,效果一样,思路不同st.push(i);} else { // 情况三while (!st.empty() && heights[i] < heights[st.top()]) { // 注意是whileint mid = st.top();st.pop();if (!st.empty()) {int left = st.top();int right = i;int w = right - left - 1;int h = heights[mid];result = max(result, w * h);}}st.push(i);}}return result;}
};

相关文章:

代码随想录算法训练营第23期day60|84.柱状图中最大的矩形

一、84.柱状图中最大的矩形 力扣题目链接 42接雨水 是找每个柱子左右两边第一个大于该柱子高度的柱子&#xff0c;而本题是找每个柱子左右两边第一个小于该柱子的柱子。 本题是要找每个柱子左右两边第一个小于该柱子的柱子&#xff0c;所以从栈头&#xff08;元素从栈头弹出…...

vue动态获取目录结构进行配置静态路由

文章目录 前言定义项目页面格式一、vite 配置动态路由新建 /router/utils.ts引入 /router/utils.ts 二、webpack 配置动态路由总结如有启发&#xff0c;可点赞收藏哟~ 前言 项目中动态配置路由可以减少路由配置时间&#xff0c;并可减少配置路由出现的一些奇奇怪怪的问题 路由…...

产品工程师工作的职责十篇(合集)

一、岗位职责的作用意义 1.可以最大限度地实现劳动用工的科学配置; 2.有效地防止因职务重叠而发生的工作扯皮现象; 3.提高内部竞争活力&#xff0c;更好地发现和使用人才; 4.组织考核的依据; 5.提高工作效率和工作质量; 6.规范操作行为; 7.减少违章行为和违章事故的发生…...

图片降噪软件 Topaz DeNoise AI mac中文版功能

Topaz DeNoise AI for Mac是一款专业的Mac图片降噪软件。如果你有噪点的相片&#xff0c;可以通过AI智能的方式来处理掉噪点&#xff0c;让照片的噪点降到最 低。有了Topaz DeNoise AI mac版处理图片更方便&#xff0c;更简单。 Topaz DeNoise AI mac软件功能 无任何预约即可在…...

【开源】基于Vue.js的车险自助理赔系统的设计和实现

项目编号&#xff1a; S 018 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S018&#xff0c;文末获取源码。} 项目编号&#xff1a;S018&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 车…...

2023年亚太杯数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法&#xff1f;2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法&#xff1f; 粒子群算法&#xff08;Pa…...

Android:Google三方库之Firebase集成详细步骤(一)

前提条件 安装最新版本的 Android Studio&#xff0c;或更新为最新版本。使用您的 Google 账号登录 Firebase请注意&#xff0c;依赖于 Google Play 服务的 Firebase SDK 要求设备或模拟器上必须安装 Google Play 服务 将Firebase添加到应用&#xff1a; 方式&#xff1a;使用…...

企业如何选择一款高效的ETL工具

企业如何选择一款高效的ETL工具? 在企业发展至一定规模后&#xff0c;构建数据仓库&#xff08;Data Warehouse&#xff09;和商业智能&#xff08;BI&#xff09;系统成为重要举措。在这个过程中&#xff0c;选择一款易于使用且功能强大的ETL平台至关重要&#xff0c;因为数…...

vr编辑器可以解决教育教学中的哪些问题

VR编辑器是一种基于虚拟现实技术的教育内容编辑器&#xff0c;可以帮助教师快速创建出高质量的虚拟现实教学内容。 比如在畜牧教学类&#xff0c;通过这个软件&#xff0c;教师可以将真实的动物场景、行为和特征模拟到虚拟现实环境中&#xff0c;让学生在沉浸式的体验中学习动物…...

国外聊天IM — Sendbird

接⼝⽂档&#xff1a; https://sendbird.com/docs 好久没写文章了 我在官网找到的pom, 下载不下来&#xff0c;git下载下来&#xff0c;打进项目里不能用&#xff0c;就只能用简单的http了 直接上代码&#xff0c;只是简单的调通代码&#xff0c;根据你自己业务改&#xff1a;…...

Django与Ajax

目录 一、什么是Ajax 二、Ajax引入 案例 小结 三、前后端数据传输的编码格式(contentType) 【1】form表单 【2】编码格式 【3】Ajax 【4】代码演示 四、Ajax发送JSON格式数据 【1】引入 【2】后端 【3】总结 五、Ajax提交文件数据 【发送文件数据的格式】 【结…...

linux日志不循环问题诊断

有一台Linux虚拟机的messages日志文件自2023年7月下旬开始没有按周为周期重新生成新的日志&#xff0c;一直累积在同一个messages文件中&#xff0c;如下所示&#xff1a; [root logrotate.d]# ls -l /var/log|grep me -rw-r--r-- 1 root root 107170 Nov 15 1…...

Golang版本处理Skywalking Trace上报数据

Tips: 中间记录了解决问题的过程&#xff0c;如不感兴趣可直接跳至结尾 首先去es里查询skywalking trace的元数据 可以拿到一串base64加密后的data_binary(直接解密不能用&#xff0c;会有乱码&#xff0c;可参考https://github.com/apache/skywalking/issues/7423) 对data_b…...

【开源】基于Vue和SpringBoot的教学过程管理系统

项目编号&#xff1a; S 054 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S054&#xff0c;文末获取源码。} 项目编号&#xff1a;S054&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 教师端2.2 学生端2.3 微信小程序端2…...

【python学习】中级篇-图形界面-内置库Tkinter,用于创建图形用户界面(GUI)

Tkinter是Python的一个内置库&#xff0c;用于创建图形用户界面(GUI)。 以下是一个简单的Tkinter用法示例&#xff1a; import tkinter as tkdef on_click():label.config(text"你好&#xff0c;" entry.get())# 创建主窗口 root tk.Tk() root.title("Tkinte…...

【开源】基于JAVA的快递管理系统

项目编号&#xff1a; S 007 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S007&#xff0c;文末获取源码。} 项目编号&#xff1a;S007&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 快递类型模块2.3 快…...

伦敦银涨1%内银涨多少才能持平

伦敦银的价格走势是全球白银市场的价格指标&#xff0c;世界上其他主要的白银市场的价格走势&#xff0c;都是以它作为标杆并紧密的跟随。如果排除汇率的因素&#xff0c;伦敦银价格上涨百分之一&#xff0c;国内的白银价格理论上也会上涨接近的水平。 但不同市场上的白银价格&…...

Linux:进度条(小程序)以及git三板斧

Linux小程序&#xff1a;进度条 在实现小程序前我们要弄清楚&#xff1a; 1.缓冲区&#xff1b; 2.回车与换行。 缓冲区&#xff1a; 分别用gcc来编译下面两个程序&#xff1a; 程序一&#xff1a; #include <stdio.h> int main() { printf("hello Makefil…...

CSS-表格属性(1)

边框相关属性&#xff08;其他元素也能用&#xff09;&#xff1a; 属性名&#xff1a;border-style功能&#xff1a;边框风格可选值&#xff1a; 1.none 默认值(无边框) 2.solid 实线 3.dashed 虚线 4.dotted 点线 5.double 双实线 border-style: dashed; 属性名&#xff1a…...

html在线生成二维码(附源码)

文章目录 1.设计来源1.1 主界面1.2 美化功能 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134458927 html二维码生成&#xff08;附源码&#xff09;&#xff0c;生成二…...

Halcon三维点云匹配实战:从一堆散乱零件到机械臂精准抓取(附完整代码)

Halcon三维点云匹配实战&#xff1a;从散乱零件到机械臂精准抓取的工业级解决方案 在工业自动化产线上&#xff0c;散乱零件的精准识别与抓取一直是困扰工程师的难题。传统二维视觉系统难以应对零件堆叠、姿态多变的情况&#xff0c;而三维点云技术正成为破解这一困局的关键钥匙…...

PCB/PCBA板厚测试用什么设备好?

关于板厚测试&#xff0c;国内测量仪器、智能检测设备专业解决方案供应商——Bamtone班通有一款非常出色的产品——BAMTONE/L750A自动板厚测试机。核心用途在于PCB制造过程中实现高精度的板厚自动检测与监控&#xff0c;这款设备在PCB/PCBA、汽车、机加工等行业有着广泛的应用&…...

macOS 开源应用终极指南:689款免费工具打造你的专业工作流

macOS 开源应用终极指南&#xff1a;689款免费工具打造你的专业工作流 【免费下载链接】open-source-mac-os-apps &#x1f680; Awesome list of open source applications for macOS. https://t.me/s/opensourcemacosapps 项目地址: https://gitcode.com/gh_mirrors/op/ope…...

c++如何实现简单的文件差异比对并生成Patch补丁文件【详解】

...

轻松下载在线视频:VideoDownloadHelper完整使用指南

轻松下载在线视频&#xff1a;VideoDownloadHelper完整使用指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 对于经常需要保存在线视频内容…...

机器学习模型监控实战:使用Evidently实现数据漂移检测与自动化预警

1. 项目概述&#xff1a;当你的机器学习模型需要一位“质检员”在机器学习项目的生命周期里&#xff0c;模型训练和部署上线往往只是故事的开始。真正让数据科学家和算法工程师们夜不能寐的&#xff0c;是模型上线后的一系列未知&#xff1a;模型的预测是否依然准确&#xff1f…...

基于AI Agent的Cypress智能测试:自然语言驱动自动化测试实践

1. 项目概述&#xff1a;一个能“思考”的自动化测试智能体最近在自动化测试的圈子里&#xff0c;关于“智能体”的讨论越来越热。大家不再满足于编写死板的脚本&#xff0c;而是希望测试工具能像人一样&#xff0c;根据上下文去“思考”和“决策”。当我看到KahlilR23/cypress…...

AI编程助手安全防护:AgentCheck实时监控与行为纠正系统

1. 项目概述&#xff1a;为AI编程助手装上“刹车系统” 最近在深度使用Claude、Cursor-Agent这类AI编程助手时&#xff0c;我遇到了一个既普遍又棘手的问题&#xff1a;当我不在屏幕前实时监督时&#xff0c;这些“聪明”的助手为了快速完成任务&#xff0c;常常会采取一些“务…...

2026年相城木托盘回收,厂家直收省心又划算

在仓储物流行业&#xff0c;木托盘是必不可少的周转工具&#xff0c;但大量闲置托盘堆积在仓库角落&#xff0c;不仅占用空间&#xff0c;还增加管理成本。2026年&#xff0c;苏州相城地区的企业发现&#xff0c;与其找零散回收商低价处理&#xff0c;不如直接联系厂家直收。以…...

保姆级教程:在YOLOv8的哪个位置插入CBAM注意力模块效果最好?(附消融实验对比)

YOLOv8中CBAM注意力模块的最佳插入位置实证研究 在计算机视觉领域&#xff0c;注意力机制已成为提升模型性能的关键技术之一。CBAM&#xff08;Convolutional Block Attention Module&#xff09;作为通道和空间注意力机制的集成模块&#xff0c;能够显著增强模型对重要特征的捕…...