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

算法Day60 | 84.柱状图中最大的矩形,刷题总结

Day60

    • 84.柱状图中最大的矩形
    • 刷题总结

84.柱状图中最大的矩形

题目链接:84.柱状图中最大的矩形
遍历每个元素,找到左右元素小于当前元素的,以左右元素间的区间(左开右开区间)所围成的面积中的最大值。

数组尾部加一个0:由于单调栈为单调递减,当前元素是在数组元素小于栈顶元素的情况下,才开始弹出的,为了避免栈不弹出(数组默认顺序为单调递增,则不会弹出),因此栈尾需要给一个一定会弹出的数字,因此为0
确保所有的柱子都能被处理到,因为如果柱子的高度都是递增的,那么最后一个柱子可能不会被处理到。

数组首部也需要加一个0:因为小于元素左侧的为栈顶第二元素,也就是为了防止对空栈进行操作,如果栈为空,则表示当前柱子是最小的柱子。但对于vector数组来说,在首部插入元素,很消耗时间,因此可以单独对空栈进行判断,从而避免在首部插入元素。

class Solution {
public:int largestRectangleArea(vector<int>& heights) {heights.push_back(0);//数组尾部加0stack<int> st;int sum = 0;for (int i = 0; i < heights.size(); ++i) {while (!st.empty() && heights[i] < heights[st.top()]) {int cur = st.top();st.pop();int Width = st.empty() ? i/*当栈为空时,直接输出i作为宽度*/ : i - st.top() - 1;sum = max(sum, Width * heights[cur]);}st.push(i);}return sum;}
};

刷题总结

这60天过得飞快。我已养成每天打开CLion、《代码随想录》、B站和CSDN的习惯。刷题不仅让我对数据结构、算法等相关知识有了更深入的了解,还提升了我对C++的使用能力。

每次观看完视频讲解后,我都会亲自动手编写代码,并将其与文章中给出的代码进行比较,从中吸取双方的优点。借助CLion上的LeetCode插件,我对编译器调试功能运用得也更加娴熟。

最重要的是,我学会了对问题进行切入点分析。按照《代码随想录》的刷题顺序进行学习,这种连贯性的方式让我更容易抓住重点,不再东奔西跑,极大地提高了我的做题效率。回头看刷卡记录,每一天都有新的收获,这种满足感弥足珍贵。

相关文章:

算法Day60 | 84.柱状图中最大的矩形,刷题总结

Day60 84.柱状图中最大的矩形刷题总结 84.柱状图中最大的矩形 题目链接&#xff1a;84.柱状图中最大的矩形 遍历每个元素&#xff0c;找到左右元素小于当前元素的&#xff0c;以左右元素间的区间&#xff08;左开右开区间&#xff09;所围成的面积中的最大值。 数组尾部加一个…...

python实现pdf转换为word文档,尽量保持格式不变

from pdf2docx import Converterdef convert_pdf_to_word(pdf_path, docx_path, font_path):# 创建 pdf2docx.Converter 对象&#xff0c;用于进行 PDF 到 Word 文档的转换操作。cv Converter(pdf_path)# 设置系统默认字体文件的路径cv.font_path font_path# docx_path 转换…...

TCP / IP 网际层的 4 个重要协议

TCP / IP 网际层的 4 个重要协议 TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff09;是一组用于互联网通信的协议。其中&#xff0c;网际层&#xff08;Internet Layer&#xff09;是TCP/IP协议栈中的一个关键层&#xff0c;主要负责网络间的数据…...

MySQL阶段DAY20(附笔记)

【注意】&#xff1a;工厂模式学习知识结构如下&#xff1a; &#xff08;一&#xff09;、单例模式 1.Single类&#xff1a; 使用懒汉式&#xff1a;对象的延迟加载&#xff0c;安全的&#xff0c;高效的应用 双重判断提升效率和安全性 package singleton;/** 单例设计模式之…...

考场作弊行为自动抓拍告警算法 yolov7

考场作弊行为自动抓拍告警系统通过yolov7python网络模型算法&#xff0c;考场作弊行为自动抓拍告警算法实时监测考场内所有考生的行为&#xff0c;对考生的行为进行自动抓拍&#xff0c;并分析判断是否存在作弊行为。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff…...

在Linux中安装RabbitMQ

RabbitMQ下载网址 Socat下载网址 erlang下载网址 RabbitMQ安装包依赖于Erlang语言包的支持&#xff0c;所以需要先安装Erlang语言包&#xff0c;再安装RabbitMQ安装包 通过Xftp软件将这三个压缩包上传到linux中的opt目录下 ,双击即可 在安装之前先查询…...

electron 单个实例控制以及日志输出

electron 单个实例控制 在使用electron打包的应用程序的时候&#xff0c;点击应用图标会打开多个实例&#xff0c;要想控制单个实例&#xff0c;需要通过 app.requestSingleInstanceLock() 判断当前程序的实例是否为当前取得锁&#xff0c; 或者说&#xff0c; 当前实例是否为…...

基于matlab使用AprilTag标记进行相机校准(附源码)

一、前言 AprilTags被广泛用作物体检测、定位应用的视觉标记&#xff0c;并作为相机校准的目标。AprilTags类似于QR码&#xff0c;但旨在编码更少的数据&#xff0c;因此可以更快地解码&#xff0c;这对于实时机器人应用程序非常有用。使用 AprilTags 作为校准模式的优点包括更…...

计算机网络————运输层

文章目录 概述UDPTCP首部格式 连接管理连接建立连接释放 概述 从IP层看&#xff0c;通信双方是两个主机。 但真正进行通信的实体是在主机中的进程&#xff0c;是这个主机中的一个进程和另一个主机中的一个进程在交换数据。 所以严格的讲&#xff0c;两个主机进行通信就是两个…...

【雕爷学编程】Arduino动手做(154)---AFMotor电机扩展板模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…...

【RPC】—Protobuf入门

Protobuf入门 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ Spring专栏&#x1f449;https://blog.csdn.net/weixin_53580595/category_12279588.html SpringMVC专栏&a…...

【⑩MySQL】:表管理,让数据管理不再困难

前言 ✨欢迎来到小K的MySQL专栏&#xff0c;本节将为大家带来MySQL表/数据库创建和管理的讲解✨ 目录 前言1. 基础知识2. 创建和管理数据库3.创建表4. 修改表5. 删除表6.总结 1. 基础知识 ✨1.1 表的基本概念 在MySQL数据库中&#xff0c;表是一种很重要的数据库对象&#xf…...

Springboot项目使用原生Websocket

目录 1.启用Websocket功能2.封装操作websocket session的工具3.保存websocket session的接口4.保存websocket session的类5.定义websocket 端点6.创建定时任务 ping websocket 客户端 1.启用Websocket功能 package com.xxx.robot.config;import org.springframework.context.a…...

在Vue 3中如何实现服务端渲染(SSR)

今天我要给你们介绍一个很酷的功能——在Vue 3中实现服务端渲染&#xff08;SSR&#xff09; 首先&#xff0c;我们来聊聊SSR是什么。它就像是一个魔术师&#xff0c;能让你的网页在服务器上就预先渲染好&#xff0c;然后发送到客户端。想象一下&#xff0c;你在浏览一个网页&…...

【计算机组成原理期末课设作业】16位微型计算机实现——MOVS串传送扩展指令设计

16位微型计算机实现——MOVS串传送扩展指令设计&#x1f60e; 前言&#x1f64c;教学目的&#xff1a;1、数据**加粗样式**通路分析2、微程序控制器分析3、指令系统分析4、微程序控制器指令周期流程图5、微指令编码6、测试程序和运行结果&#xff08;1&#xff09;首先先在内存…...

CodeMirror 对 XML 文档熟悉及元素控制自定义

CodeMirror 是一个网络代码编辑器组件。它可以在网站中用于实现支持多种编辑功能的文本输入字段&#xff0c;并具有丰富的编程接口以允许进一步扩展。 本文为 xml 格式的代码提示约束格式规范的自定义示例内容。 先看效果&#xff0c;如下&#xff1a; 官方 Demo 的完整代码如…...

Jetpack - ViewModel

一、概念 二、使用 2.1 创建ViewModel //无参 class MainViewModel : ViewModel() {} //有参 class MainViewModel(mainRepository: MainRepository) : ViewModel() {} class MainViewModelFactory(private val mainRepository: MainRepository) : ViewModelProvider.Factor…...

【新版系统架构】第十三章-层次式架构设计理论与实践

软考-系统架构设计师知识点提炼-系统架构设计师教程&#xff08;第2版&#xff09; 第一章-绪论第二章-计算机系统基础知识&#xff08;一&#xff09;第二章-计算机系统基础知识&#xff08;二&#xff09;第三章-信息系统基础知识第四章-信息安全技术基础知识第五章-软件工程…...

剖析Linux文件系统

Linux 文件系统体系结构是一个对复杂系统进行抽象化的有趣例子。通过使用一组通用的 API 函数&#xff0c;Linux 可以在许多种存储设备上支持许多种文件系统。例如&#xff0c;read 函数调用可以从指定的文件描述符读取一定数量的字节。read 函数不了解文件系统的类型&#xff…...

简介Maven结构与配置方法

一、Maven是什么 Maven是apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具。 它有什么用呢&#xff1f; 比如我以前要IOUtils这个包&#xff0c;那要到网站下去下载下来&#xff0c;再导入。 当jar包多的时候&#xff0c;一个一个导出&#xff0c;…...

好用的网址6

PPT课件网&#xff1a;http://www.pptkj.net/ ImgUpscaler&#xff1a;AI Image Upscaler - Upscale Photo, Cartoons in Batch Free 加强图片 AI Draw&#xff1a;AI Draw | Convert Images to One-Line Drawings with AI ZToDoList&#xff1a;https://www.ztodolis…...

MySQL数据库---笔记5

MySQL数据库---笔记5 一、锁1.1、介绍1.2、全局锁1.2.1、全局锁介绍1.2.2、一致性数据备份 1.3、表级锁1.3.1、表锁1.3.2、元数据锁&#xff08;meta data lock , MDL&#xff09;1.3.3、意向锁 1.4、行级锁1.4.1、介绍1.4.2、行锁1.4.3、间隙锁/临建锁 二、InnoDB引擎2.1、逻辑…...

Yocto:初始

1.构建Yocto项目前,需要先安装其所依赖的一些组件及工具 1 System Requirements — The Yocto Project 4.2.999 documentation 需要依次安装: $ sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python…...

autodl算力租用平台应用于pycharm

一、GPU租用选择 1、创建实例 首先进入算力市场 博客以2080为例&#xff0c;选择计费方式&#xff0c;选择合适的主机&#xff0c;选择要创建实例中的GPU数量&#xff0c;选择镜像&#xff08;内置了不同的深度学习框架&#xff09;&#xff0c;最后创建即可 2、SSH远程连…...

高德地图的使用

JS API 结合 Vue 使用 高德地图 jsapi 下载、引入 npm add amap/amap-jsapi-loaderimport AMapLoader from amap/amap-jsapi-loader 使用2.0版本的loader需要在window对象下先配置 securityJsCode JS API 安全密钥使用 JS API 使用 script 标签同步加载增加代理服务器设置…...

<List<Map<String,String>>> 删除元素常见的误区以及删除方法

看到这么标题可能觉得这个真是太easy了&#xff0c;不就remove吗&#xff0c;分分钟搞定。 但结果却出乎意料&#xff0c;下面我们来j简单说说list删除数据可能遇到的坑&#xff1a; 先说明我们可能会遇到的两个问题&#xff1a; 1.java.lang.IndexOutOfBoundsException(索引越…...

Linux下的编辑器——vim的简单上手指南

文章目录 一.概念1. 什么是 vim2. Vim 的模式①命令模式② 插入模式③底线命令模式 二.vim的基本操作1.如何启动vim&#xff1f;2. [命令模式」切换至 「插入模式」3.「插入模式」 切换至 「命令模式」4.「命令模式」切换至 「底行模式」5. 如何退出 vim&#xff1f; 三.vim指令…...

C++多线程学习(二、多线程的几种创造方式【有返回值的之后讲】)

目录 创建多线程 1.普通函数充当线程处理函数创造线程 2.Lambda表达式充当线程处理函数 3.带参函数创建线程 3.1普通参数 3.2传入引用 3.3智能指针充当函数参数 4.通过类中的成员函数创建 4.1仿函数方式创建&#xff1a;类名的方式调用 4.2普通类中的成员函数 创建多…...

前端开发框架生命周期详解:Vue、React和Angular

引言 作为前端开发者&#xff0c;掌握前端开发框架的生命周期是非常重要的。在现代Web应用开发中&#xff0c;Vue.js、React和Angular是三个最流行的前端开发框架。本篇博客将详细解读这三个框架的生命周期&#xff0c;包括每个阶段的含义、用途以及如何最大限度地利用它们。通…...

【Java从入门到大牛】程序流程控制

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Java从入门到大牛 &#x1f320; 首发时间&#xff1a;2023年7月7日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e…...