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

devtools/2025/2/12 3:15:04/

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!
代码随想录

LeetCode:84.柱状图中最大的矩形
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
求在该柱状图中,能够勾勒出来的矩形的最大面积。
示例 1:
在这里插入图片描述
输入:heights = [2,1,5,6,2,3]
输出:10
解释:最大的矩形为图中红色区域,面积为 10
示例 2:
在这里插入图片描述
输入: heights = [2,4]
输出: 4

  • 类似上一题,只是这里栈顶到栈底的元素是递减的
  • 需要数组扩容个,首尾需要加0,比如[2,4,6,7]这种情况需要尾部加0, 比如[8,6,4,2]这种情况需要尾部加0
java">	public int largestRectangleArea(int[] heights) {// 数组扩容,首尾都加0,比如[2,4,6,7]这种情况需要尾部加0, 比如[8,6,4,2]这种情况需要尾部加0int[] newHeight = new int[heights.length + 2];System.arraycopy(heights, 0, newHeight, 1, heights.length);newHeight[heights.length + 1] = 0;newHeight[0] = 0;int res = 0;Stack<Integer> st = new Stack<>();st.push(0);for (int i = 1; i < newHeight.length; i++) {while (newHeight[i] < newHeight[st.peek()]) {int mid = st.pop();// 此时不需要再判空,因为最开始栈里面已经放了0 了int left = st.peek();int w = i - left - 1;res = Math.max(res, newHeight[mid] * w);}st.push(i);}return res;}

http://www.ppmy.cn/devtools/158092.html

相关文章

C# 封送和远程编程介绍

.NET学习资料 .NET学习资料 .NET学习资料 在 C# 编程领域中&#xff0c;封送&#xff08;Marshaling&#xff09;和远程编程&#xff08;Remote Programming&#xff09;是两个极为重要的概念&#xff0c;它们为开发者提供了与不同环境、不同进程或不同机器上的代码进行交互的…

k8s pod dnsPolicy 种类学习

k8s pod dnsPolicy 种类介绍 在 Kubernetes 中&#xff0c;pod.spec.dnsPolicy 用于定义 Pod 的 DNS 策略。dnsPolicy 可以取以下几种值&#xff1a; Default:这意味着 Pod 将继承节点的 DNS 设置。节点的 DNS 配置通常是在 kubelet 启动时配置的&#xff0c;依据主机的 /etc/…

SQL自学,mysql从入门到精通 --- 第 5 天,对函数的处理

对函数的处理 新建一个成绩表 rootmysqldb 09:39: [d1]> create table score (-> name varchar(30),-> chinese int,-> math int,-> music int,-> team int,-> magic int,-> computer int-> ); Query OK, 0 rows affected (0.01 sec)rootmysqldb…

《从安全到定制:软件私有化部署业务实战案例解析》

数字化转型时代&#xff0c;企业如何守护数字资产&#xff1f;私有化部署的进阶指南 在数字化转型的浪潮下&#xff0c;数据已成为企业的核心资产。然而&#xff0c;近年来频发的数据泄露事件——从医疗机构的患者信息外泄&#xff0c;到金融行业的交易数据被盗——让越来越多…

从零到一:基于Rook构建云原生Ceph存储的全面指南(上)

文章目录 一.Rook简介二.Rook与Ceph架构2.1 Rook结构体系2.2 Rook包含组件1&#xff09;Rook Operator2&#xff09;Rook Discover3&#xff09;Rook Agent 2.3 Rook与kubernetes结合的架构图如下2.4 ceph特点2.5 ceph架构2.6 ceph组件 三.Rook部署Ceph集群3.1 部署条件3.3 获取…

docker和docker compose版本太低问题的解决方案

你的 docker-compose 运行时遇到了 KeyError: ContainerConfig 错误&#xff0c;这通常与以下几个问题有关&#xff1a; Docker Compose 版本过旧Docker 版本过旧已有的容器缓存损坏Docker daemon 可能存在问题 解决方案 1. 确保 Docker 版本符合要求 运行以下命令查看 Dock…

Java实现状态模式

一、简介 1、定义 状态模式 (State Pattern)是一种行为型设计模式&#xff0c;允许对象在内部状态改变时改变它的行为。通过定义状态接口和具体状态类&#xff0c;将对象的状态和行为分开&#xff0c;使得状态改变时可以改变行为。 2、状态模式的结构 状态模式涉及以下几个角…

Linux 僵尸进程与孤儿进程

Linux 僵尸进程与孤儿进程 1. 僵尸进程 (Zombie Process)1.1 什么是僵尸进程1.2 僵尸进程的产生1.3 僵尸进程的危害1.4 如何处理僵尸进程 2. 孤儿进程 (Orphan Process)2.1 什么是孤儿进程2.2 孤儿进程的特点2.3 孤儿进程的应用 在 Linux 系统中&#xff0c;进程是资源分配和调…