【每日力扣】84. 柱状图中最大的矩形 与 295. 数据流的中位数

在这里插入图片描述

🔥 个人主页: 黑洞晓威
😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害

84. 柱状图中最大的矩形

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

image-20240526134056550

解题思路

要求在柱状图中勾勒出的最大矩形面积,可以使用单调栈来解决这个问题。基本思路如下:

  1. 维护一个栈,栈中存放柱子的索引。
  2. 遍历每根柱子,对于每根柱子,将其与栈顶元素比较:
    • 如果当前柱子高度大于栈顶柱子高度,则将当前柱子的索引入栈。
    • 如果当前柱子高度小于等于栈顶柱子高度,则不断出栈,计算以栈顶柱子为高度的矩形面积,并更新最大面积。
  3. 遍历完所有柱子后,对剩余栈中柱子依次计算面积,更新最大面积。

代码实现

import java.util.ArrayDeque;
import java.util.Deque;class Solution {public int largestRectangleArea(int[] heights) {Deque<Integer> stack = new ArrayDeque<>();int maxArea = 0;for (int i = 0; i <= heights.length; i++) {int h = (i == heights.length) ? 0 : heights[i];if (stack.isEmpty() || h >= heights[stack.peek()]) {stack.push(i);} else {while (!stack.isEmpty() && h < heights[stack.peek()]) {int top = stack.pop();int width = stack.isEmpty() ? i : i - 1 - stack.peek();maxArea = Math.max(maxArea, heights[top] * width);}stack.push(i);}}return maxArea;}
}

295. 数据流的中位数

中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。

  • 例如 arr = [2,3,4] 的中位数是 3
  • 例如 arr = [2,3] 的中位数是 (2 + 3) / 2 = 2.5

实现 MedianFinder 类:

  • MedianFinder() 初始化 MedianFinder 对象。
  • void addNum(int num) 将数据流中的整数 num 添加到数据结构中。
  • double findMedian() 返回到目前为止所有元素的中位数。与实际答案相差 10-5 以内的答案将被接受。
image-20240526134254472

实现思路:

  1. 使用一个最大堆存储数据流中较小的一半数字,一个最小堆存储数据流中较大的一半数字。
  2. 添加新元素的时候,首先将其插入最大堆,然后从最大堆中取出堆顶元素(最大值),插入到最小堆。
  3. 如果两个堆的大小不平衡,调整使得两个堆的大小相差不超过1。
  4. 获取中位数的操作可以根据两个堆的大小分情况返回。

代码实现

import java.util.ArrayDeque;
import java.util.Deque;class Solution {public int largestRectangleArea(int[] heights) {Deque<Integer> stack = new ArrayDeque<>();int maxArea = 0;for (int i = 0; i <= heights.length; i++) {int h = (i == heights.length) ? 0 : heights[i];if (stack.isEmpty() || h >= heights[stack.peek()]) {stack.push(i);} else {while (!stack.isEmpty() && h < heights[stack.peek()]) {int top = stack.pop();int width = stack.isEmpty() ? i : i - 1 - stack.peek();maxArea = Math.max(maxArea, heights[top] * width);}stack.push(i);}}return maxArea;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis6.2.7 搭建一主多从

1、集群规划 节点端口角色192.168.137.1026379master192.168.137.1026380slave192.168.137.1036381slave 2、伪集群搭建 2.1 创建fake_cluster 目录存放 公共配置文件 # 进入redis目录 cd /app/apps/redis-6.2.7# 创建存放伪集群的目录 mkdir fake_cluster#复制redis.conf到…

DTC 2024回顾丨云和恩墨重塑数据库内核技术,革新企业降本增效之道

在数字化浪潮席卷全球的当下&#xff0c;关系型数据库作为市场主导力量的地位依然稳固。然而&#xff0c;面对新兴数据库与服务形态的挑战&#xff0c;以及企业日益强烈的降本增效需求&#xff0c;数据库技术的发展必须紧跟时代步伐&#xff0c;充分发挥资源效能以提升企业竞争…

03自动辅助导航驾驶NOA

NOA是自动辅助导航驾驶或领航辅助驾驶的缩写&#xff0c;其全称为Navigate On Autopilot。在设定好导航路线并进入NOA的可使用路段后&#xff0c;驾驶员即可开启辅助驾驶。在A点到B点的过程中&#xff0c;NOA能够实现自动上下匝道、自行超车、自行变道、自适应巡航等多种功能。…

【机器学习300问】99、多通道卷积神经网络在卷积操作时有哪些注意事项?

一、多通道卷积神经网络示例 还是以图像处理为例&#xff0c;如果你的目标不仅是分析灰度图像特性&#xff0c;还打算捕捉RGB彩色图像的特征。如下图&#xff0c;当面对一张66像素的彩色图像时&#xff0c;提及的“3”实际上是指红、绿、蓝三种颜色通道&#xff0c;形象地说&am…

Nginx R31 doc-11-Compression and Decompression 压缩与解压缩

前言 大家好&#xff0c;我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的&#xff0c;可以参考我的另一个项目&#xff1a; 手写从零实现简易版 tomcat minicat 压缩与解压缩 压缩…

Java 简易操作Excel

首先&#xff0c;我们需要创建一个数据库表来存储这些单词及其相关信息。以下是一个简单的SQL语句示例&#xff0c;用于创建这样一个表&#xff1a; sql CREATE TABLE EnglishWords (id INT AUTO_INCREMENT PRIMARY KEY,word VARCHAR(255) NOT NULL,phonetic TEXT NOT NULL,c…

书生·浦语第二期-笔记2

课程链接&#xff1a;https://github.com/InternLM/Tutorial/tree/camp2 视频地址&#xff1a;轻松玩转书生浦语大模型趣味Demo_哔哩哔哩_bilibili 大模型及InternLM介绍 大模型&#xff1a;人工智能领域中参数数量巨大、拥有庞大计算能力和参数规模的模型 特点&#xff1a…

使用json-server来创建mockserver

代替mock模拟数据 1.使用mkdir vue3-ts-server 创建目录 2.npm init -y 生成package.json的依赖配置文件 详见json-server - npm 3.cnpm install json-server -S 4.目录结构是data&#xff0c;public&#xff0c;src{app.js &#xff0c; router.js &#xff0c; db.js &…

【Linux杂货铺】进程通信

目录 &#x1f308; 前言&#x1f308; &#x1f4c1; 通信概念 &#x1f4c1; 通信发展阶段 &#x1f4c1; 通信方式 &#x1f4c1; 管道&#xff08;匿名管道&#xff09; &#x1f4c2; 接口 ​编辑&#x1f4c2; 使用fork来共享通道 &#x1f4c2; 管道读写规则 &…

初中英语优秀作文分析-002Who stole the cupcake-谁偷了纸杯蛋糕?

更多资源请关注纽扣编程微信公众号 记忆树 1 One Sunday afternoon, Leslie was at home with her kids, 3-year-old Angel, 6-year-old Carl, and 7-year-old Tony. 翻译 一个周日的下午&#xff0c;Leslie和她的孩子们在家&#xff0c;他们是3岁的Angel&#xff0c;6岁的…

镜子摆放忌讳多

镜子是我们日常生活中不可或缺的物品。在风水中&#xff0c;镜子的作用非常多&#xff0c;能够起到一定的作用。镜子的摆放位置也是非常有讲究的&#xff0c;摆放不好会直接影响到家人的事业、财运、婚姻乃至健康等诸多方面。 第一个风水忌讳&#xff0c;镜子对大门。大门的正前…

Linux防火墙之iptables(二)

一.SNAT策略概述 1.SNAT 策略的典型应用环境 局域网主机共享单个公网IP地址接入Internet&#xff08;私有IP不能在Internet中正常路由&#xff09; 局域共享上网 2.SNAT 策略的原理 源地址转换&#xff0c;Source Network Address Translation 修改数据包的源地址 未作SNAT转换…

用three.js+echarts给公司写了一个站点数据大屏系统经验总结

时间过的好快,参加公司的新项目研发快一年了,五一机器人项目首秀,我们遇到了高并发集中下单情景,然后海量数据处理场景来了,给我在后端领域的高并发实践业务上画上了漂亮的一笔经验。人都是在磨练中成长,我很感谢这次给我的机会,虽然有点累,但也有点小成就。正好现在有…

时隔一年半。。。

大概一年半的时间没登录&#xff0c;经历了蛮多事情&#xff0c;包括不满&#xff0c;辞职&#xff0c;备考&#xff0c;笔试&#xff0c;面试… 大体上是蛮幸运的&#xff0c;又要去新的单位工作了&#xff0c;第一份事业编的工作做得真的很痛苦&#xff0c;大概是因为丢掉了专…

AGI系列(1):掌握AI大模型提示词优化术,提问准确率飙升秘籍

当我们向AI大模型提问时&#xff0c;通常人们的做法是有什么问题&#xff0c;就直接去问&#xff0c;得到大模型的回复结果&#xff0c;时好时坏&#xff0c;完全没有可控性。 那么有没有一种方式或是一套方法&#xff0c;可以让我们向大模型提问时&#xff0c;得到的结果更准确…

nacos 2.3.3 Windows系统安装详细版

1&#xff0c;下载 https://github.com/alibaba/nacos/releases 2&#xff0c;解压 3&#xff0c;将nacos的内置库(derby)&#xff0c;修改为我们自己的 mysql 3.1 创建一个数据库 3.2 连接数据库 3.3 执行mysql 脚本&#xff0c;在nacos的conf 目录下 mysql-schema.sql 执…

Python | R | MATLAB高斯过程统计模型

&#x1f4dc;随机统计模型-用例 &#x1f4dc;海上风电场模型 | &#x1f4dc;天气和建筑设计模型 | &#x1f4dc;不确定性量化应用模型 | &#x1f4dc;马尔可夫链蒙特卡罗算法多模态采样贝叶斯模型 | &#x1f4dc;分类过程最大似然模型 | &#x1f4dc;C和Python通信引文…

【LeetCode 167】两数之和II

1. 题目 2. 分析 就是简单的双指针的题&#xff0c;使用头尾指针分别指向数组的首尾&#xff0c;然后依次判断两者值的和与target的大小关系。关系分成三类&#xff1a; &#xff08;1&#xff09;和大于target&#xff0c;说明尾指针过大&#xff0c;需要前移&#xff1b; &…

深入了解 Golang 多架构编译:交叉编译最佳实践

随着软件开发领域的不断发展&#xff0c;我们面临着越来越多的挑战&#xff0c;其中之一是如何在不同的平台和架构上部署我们的应用程序。Golang&#xff08;Go&#xff09;作为一种现代化的编程语言&#xff0c;具有出色的跨平台支持&#xff0c;通过其强大的多架构编译功能&a…