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

代码随想录第50天 | 84.柱状图中最大的矩形

84.柱状图中最大的矩形

//双指针 js中运行速度最快
var largestRectangleArea = function(heights) {const len = heights.length;const minLeftIndex = new Array(len);const maxRigthIndex = new Array(len);// 记录每个柱子 左边第一个小于该柱子的下标minLeftIndex[0] = -1; // 注意这里初始化,防止下面while死循环for(let i = 1; i < len; i++) {let t = i - 1;// 这里不是用if,而是不断向左寻找的过程while(t >= 0 && heights[t] >= heights[i]) t = minLeftIndex[t];minLeftIndex[i] = t;}// 记录每个柱子 右边第一个小于该柱子的下标maxRigthIndex[len - 1] = len; // 注意这里初始化,防止下面while死循环for(let i = len - 2; i >= 0; i--){let t = i + 1;// 这里不是用if,而是不断向右寻找的过程while(t < len && heights[t] >= heights[i]) t = maxRigthIndex[t];maxRigthIndex[i] = t;}// 求和let maxArea = 0;for(let i = 0; i < len; i++){let sum = heights[i] * (maxRigthIndex[i] - minLeftIndex[i] - 1);maxArea = Math.max(maxArea , sum);}return maxArea;
};//单调栈 
var largestRectangleArea = function(heights) {let maxArea = 0;const stack = [];heights = [0,...heights,0]; // 数组头部加入元素0 数组尾部加入元素0for(let i = 0; i < heights.length; i++){ // 只用考虑情况一 当前遍历的元素heights[i]小于栈顶元素heights[stack[stack.length-1]]]的情况while(heights[i] < heights[stack[stack.length-1]]){// 当前bar比栈顶bar矮const stackTopIndex = stack.pop();// 栈顶元素出栈,并保存栈顶bar的索引let w = i - stack[stack.length -1] - 1;let h = heights[stackTopIndex]// 计算面积,并取最大面积maxArea = Math.max(maxArea, w * h);}stack.push(i);// 当前bar比栈顶bar高了,入栈}return maxArea;
};

思路

跟雨水是反的

相关文章:

代码随想录第50天 | 84.柱状图中最大的矩形

84.柱状图中最大的矩形 //双指针 js中运行速度最快 var largestRectangleArea function(heights) {const len heights.length;const minLeftIndex new Array(len);const maxRigthIndex new Array(len);// 记录每个柱子 左边第一个小于该柱子的下标minLeftIndex[0] -1; //…...

深度学习---卷积神经网络

卷积神经网络概述 卷积神经网络是深度学习在计算机视觉领域的突破性成果。在计算机视觉领域。往往输入的图像都很大&#xff0c;使用全连接网络的话&#xff0c;计算的代价较高。另外图像也很难保留原有的特征&#xff0c;导致图像处理的准确率不高。 卷积神经网络&#xff0…...

Windows系统下安装CouchDB3.3.2教程

安装 前往CouchDB官网 官网点击download下载msi文件 双击该msi文件&#xff0c;一直下一步 创建个人account 设置cookie value 用于进行身份验证和授权。 愉快下载 点击OK 重启 启动 重启电脑后 打开浏览器并访问以下链接&#xff1a;http://127.0.0.1:5984/ 如果没有问…...

JavaScript基础知识(二)

JavaScript基础知识&#xff08;二&#xff09; 一、ES2015 基础语法1.变量2.常量3.模板字符串4.结构赋值 二、函数进阶1. 设置默认参数值2. 立即执行函数3. 闭包4. 箭头函数 三、面向对象1. 面向对象概述2. 基本概念3. 新语法 与 旧语法3.1 ES5 面向对象的知识ES5构造函数原型…...

SQL NULL Values(空值)

什么是SQL NULL值&#xff1f; SQL 中&#xff0c;NULL 用于表示缺失的值。数据表中的 NULL 值表示该值所处的字段为空。 具有NULL值的字段是没有值的字段。 如果表中的字段是可选的&#xff0c;则可以插入新记录或更新记录而不向该字段添加值。然后&#xff0c;该字段将被保存…...

云原生Docker网络管理

目录 Docker网络 Docker 网络实现原理 为容器创建端口映射 查看容器的输出和日志信息 Docker 的网络模式 查看docker网络列表 指定容器网络模式 网络模式详解 host模式 container模式 none模式 bridge模式 自定义网络 Docker网络 Docker 网络实现原理 Docker使用Lin…...

聊聊线程池的预热

序 本文主要研究一下线程池的预热 prestartCoreThread java/util/concurrent/ThreadPoolExecutor.java /*** Starts a core thread, causing it to idly wait for work. This* overrides the default policy of starting core threads only when* new tasks are executed. T…...

VueComponent的原型对象

一、prototype 每一个构造函数身上又有一个prototype指向其原型对象。 如果我们在控制台输入如下代码&#xff0c;就能看到Vue构造函数的信息&#xff0c;在他身上可以找到prototype属性&#xff0c;指向的是Vue原型对象&#xff1a; 二、__proto__ 通过构造函数创建的实例对…...

Redis不止能存储字符串,还有List、Set、Hash、Zset,用对了能给你带来哪些优势?

文章目录 &#x1f31f; Redis五大数据类型的应用场景&#x1f34a; 一、String&#x1f34a; 二、Hash&#x1f34a; 三、List&#x1f34a; 四、Set&#x1f34a; 五、Zset &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO…...

Python OpenCV通过灰度平均值进行二值化处理以减少像素误差

Python OpenCV通过灰度平均值进行二值化处理以减少像素误差 前言前提条件相关介绍实验环境通过灰度平均值进行二值化处理以减少像素误差固定阈值二值化代码实现 灰度平均值二值化代码实现 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容…...

[Golang]多返回值函数、defer关键字、内置函数、变参函数、类成员函数、匿名函数

函数 文章目录 函数多返回值函数按值传递、按引用传递类成员函数改变外部变量变参函数defer和追踪说明一些常见操作实现 使用defer实现代码追踪记录函数的参数和返回值 常见的内置函数将函数作为参数闭包实例闭包将函数作为返回值 计算函数执行时间使用内存缓存来提升性能 参考…...

【剑指Offer】:删除链表中的倒数第N个节点(此题是LeetCode上面的)剑指Offer上面是链表中的倒数第K个节点

给定一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[] 示例 3&#xff1a;…...

acwing第 126 场周赛 (扩展字符串)

5281. 扩展字符串 一、题目要求 某字符串序列 s0,s1,s2,… 的生成规律如下&#xff1a; s0 DKER EPH VOS GOLNJ ER RKH HNG OI RKH UOPMGB CPH VOS FSQVB DLMM VOS QETH SQBsnDKER EPH VOS GOLNJ UKLMH QHNGLNJ Asn−1AB CPH VOS FSQVB DLMM VOS QHNG Asn−1AB&#xff0c;其…...

Milvus 介绍

Milvus 介绍 Milvus 矢量数据库是什么&#xff1f;关键概念非结构化数据嵌入向量向量相似度搜索 为什么是 Milvus?支持哪些索引和指标&#xff1f;索引类型相似度指标(Similarity metrics) 应用示例Milvus 是如何设计的&#xff1f;开发者工具API访问Milvus 生态系统工具 本页…...

Linux绝对路径和相对路径

在 Linux 中&#xff0c;简单的理解一个文件的路径&#xff0c;指的就是该文件存放的位置。 只要我们告诉 Linux 系统某个文件存放的准确位置&#xff0c;那么它就可以找到这个文件。指明一个文件存放的位置&#xff0c;有 2 种方法&#xff0c;分别是使用绝对路径和相对路径。…...

Linux:firewalld防火墙-基础使用(2)

上一章 Linux&#xff1a;firewalld防火墙-介绍&#xff08;1&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/133960695?spm1001.2014.3001.5501 我使用的系统为centos7 firewalld启动停止等操作 systemctl start firewalld 开启防火墙 systemct…...

【每日一练】20231023

统计每个字符出现的次数相关问题 方法一&#xff1a;map的put方法遍历 public class Test {public static void main(String[] args) {StringBuilder sb new StringBuilder("");Random ran new Random();for(int i0;i<2000000;i) {sb.append((char) (a ran.n…...

【项目经理】工作流引擎

项目经理之 工作流引擎 一、业务系统管理目的维护信息 二、组织架构管理目的维护信息 三、角色矩阵管理目的维护信息 四、条件变量管理目的维护信息 五、流程模型管理目的维护信息 六、流程版本管理目的维护信息 七、流程监管控制目的维护信息 系列文章版本记录 一、业务系统管…...

025-第三代软件开发-实现需求长时间未操作返回登录界面

第三代软件开发-实现需求长时间未操作返回登录界面 文章目录 第三代软件开发-实现需求长时间未操作返回登录界面项目介绍实现需求长时间未操作返回登录界面实现思路用户操作监控QML 逻辑处理 关键字&#xff1a; Qt、 Qml、 QTimer、 timeout、 eventFilter 项目介绍 欢迎…...

驱动开发LED灯绑定设备文件

头文件 #ifndef __HEAD_H__ #define __HEAD_H__typedef struct {unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t;#define PHY_LED1_ADDR 0x50006000 #define PHY_LED2_ADDR 0x50007000 #defin…...

Google疯了!AI全面免费,这下全网都要变天了!

太特么疯狂了&#xff01;谷歌刚刚发布的 Gemma 4 开源模型&#xff0c;简直是要了所有付费 AI 的命&#xff0c;整个行业的游戏规则被瞬间掀翻。划重点&#xff1a;AI 彻底进入“白嫖时代”了&#xff01;你现在完全可以利用 Ollama 这类工具&#xff0c;把 Gemma 4 直接接进 …...

5分钟上手IndexTTS2:让AI语音合成真正听懂你的情感!

5分钟上手IndexTTS2&#xff1a;让AI语音合成真正听懂你的情感&#xff01; 【免费下载链接】index-tts An Industrial-Level Controllable and Efficient Zero-Shot Text-To-Speech System 项目地址: https://gitcode.com/gh_mirrors/in/index-tts 还在为视频配音找不到…...

ExifToolGUI:让图片元数据管理变得如此简单的5个实用技巧

ExifToolGUI&#xff1a;让图片元数据管理变得如此简单的5个实用技巧 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 你是否曾经面对成百上千张照片&#xff0c;需要批量修改拍摄时间、添加GPS定位信息&…...

高性能FMC接口扩展卡详解:高速ADC/DAC设计、工程应用与参数对比

随着通信、雷达、测控等领域对信号带宽、同步精度与实时处理能力的要求持续提升&#xff0c;传统低速采集与信号生成方案在带宽、时延和集成度上已难以满足新一代系统需求。更高采样率、更高分辨率、更低噪声、更稳定可靠的高速信号收发模块&#xff0c;成为硬件平台设计的核心…...

给AI代理加记录仪,值不值?从OpenClaw漏洞看日志监控的代价与边界

先说结论 日志监控能有效追溯AI代理的异常行为&#xff0c;但引入额外开销和复杂度&#xff0c;需要权衡安全与性能。 自建方案&#xff08;如ELK&#xff09;控制力强但成本高&#xff0c;云服务省心但可能受限于厂商锁定和功能边界。 实施前应明确监控粒度、告警策略和存储…...

【物联网毕设】手势小车控制-STM32+蓝牙

目录 一 连线图 1. 原理图 2. PCB效果 3. 实物效果 4. 功能概括 &#xff08;1&#xff09;主机 &#xff08;2&#xff09;从机 &#xff08;3&#xff09;演示视频 二 底层代码使用方式 1 使用说明 2 下载程序 三 APP使用方式 1下载APP 四 程序架构及修改&…...

7种高效连接方式全解析:php-amqplib连接RabbitMQ的终极指南

7种高效连接方式全解析&#xff1a;php-amqplib连接RabbitMQ的终极指南 【免费下载链接】php-amqplib The most widely used PHP client for RabbitMQ 项目地址: https://gitcode.com/gh_mirrors/ph/php-amqplib php-amqplib作为最广泛使用的PHP RabbitMQ客户端&#xf…...

汽车工程师必看:从CAN到Ethernet,6种车载通信协议全解析(附应用场景对比)

汽车工程师必看&#xff1a;从CAN到Ethernet&#xff0c;6种车载通信协议全解析&#xff08;附应用场景对比&#xff09; 当一辆现代汽车驶过街头&#xff0c;很少有人会意识到车内正运行着一个比阿波罗登月飞船更复杂的电子系统网络。这个由数百个电子控制单元&#xff08;ECU…...

保姆级教程:用YOLOv8n-pose ONNX模型实现摄像头实时姿态估计(附完整代码)

零基础实战&#xff1a;YOLOv8n-pose ONNX模型实时姿态估计全流程解析 当我们需要在视频流中实时追踪人体动作时&#xff0c;传统方案往往面临精度与速度难以兼得的困境。YOLOv8n-pose作为轻量级姿态估计模型&#xff0c;配合ONNX运行时的高效推理能力&#xff0c;为开发者提供…...

Taskr性能优化秘籍:从毫秒级任务到大规模项目的最佳实践

Taskr性能优化秘籍&#xff1a;从毫秒级任务到大规模项目的最佳实践 【免费下载链接】taskr A fast, concurrency-focused task automation tool. 项目地址: https://gitcode.com/gh_mirrors/ta/taskr Taskr是一款专注于并发的快速任务自动化工具&#xff0c;作为与Gulp…...