力扣每日一题85:最大矩形

题目

困难

相关标签

相关企业

给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。

示例 1:

输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
输出:6
解释:最大矩形如上图所示。

示例 2:

输入:matrix = [["0"]]
输出:0

示例 3:

输入:matrix = [["1"]]
输出:1

提示:

  • rows == matrix.length
  • cols == matrix[0].length
  • 1 <= row, cols <= 200
  • matrix[i][j] 为 '0' 或 '1'

通过次数 198.2K

提交次数 359.2K

通过率 55.2%

思路

把值为1的方格当作一个正方形,把某一层的每个方格作为底,该方格以及上方连续1的个数就是以该方格为底的矩形的面积,这样最大矩形面积就变成了以最下面一层方格作为底,最大柱状图的面积,就转化成了T84。

代码

class Solution {
public:int largestRectangleArea(vector<int>& heights){heights.push_back(-1);stack<int> stk;int ans=0;for(int i=0;i<heights.size();i++){//当遇到右边界时while(!stk.empty() && heights[i]<heights[stk.top()]){int tall=heights[stk.top()];stk.pop();int left=stk.empty() ? -1:stk.top();ans=max(ans,(i-left-1)*tall);}stk.push(i);}return ans;}int maximalRectangle(vector<vector<char>>& matrix) {int rows=matrix.size();int cols=matrix[0].size();vector<vector<int>> heights(rows,vector<int>(cols,0));for(int i=0;i<cols;i++){if(matrix[0][i]=='1') heights[0][i]=1;}for(int i=1;i<rows;i++){for(int j=0;j<cols;j++){if(matrix[i][j]=='1') heights[i][j]=heights[i-1][j]+1;}}int ans=0;for(int i=0;i<rows;i++){ans=max(ans,largestRectangleArea(heights[i]));}return ans;}
};

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

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

相关文章

LeetCode-day06-3040. 相同分数的最大操作数目 II

LeetCode-day06-3040. 相同分数的最大操作数目 II 题目描述示例示例1&#xff1a;示例2&#xff1a; 思路代码 题目描述 给你一个整数数组 nums &#xff0c;如果 nums 至少 包含 2 个元素&#xff0c;你可以执行以下操作中的 任意 一个&#xff1a; 选择 nums 中最前面两个元…

使用 Django 和 MQTT 构建实时数据传输应用

文章目录 什么是 MQTT&#xff1f;Django 中的 MQTT结论 在现代的 Web 应用程序开发中&#xff0c;实时数据传输变得越来越重要。MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的发布/订阅消息传输协议&#xff0c;而 Django 是一个流行的 Pyt…

如何解决访问网站时IP被限制的问题?

在互联网上&#xff0c;用户可能会面临一个令人困扰的问题——当尝试访问某个特定的网站时&#xff0c;却发现自己的IP地址被该网站屏蔽。 IP地址被网站屏蔽是一个相对常见的现象&#xff0c;而导致这种情况的原因多种多样&#xff0c;包括恶意行为、违规访问等。本文将解释IP地…

Linux进程基本概念

基本概念 内核观点&#xff1a;担当分配系统资源&#xff08;CPU时间&#xff0c;内存&#xff09;的实体进程信息被放在一个叫做进程控制块的数据结构中&#xff0c;可以理解为进程属性的集合&#xff08;PCB&#xff09;在Linux中描述进程的结构体叫做task_structtask_struc…

qt自定义事件过滤器

以下是一个完整的示例&#xff0c;包括如何使用这个事件过滤器的步骤&#xff1a; 1. 定义事件过滤器类 你已经正确定义了 LostFocusFilter 类&#xff0c;这里是完整的定义&#xff1a; #include <QObject> #include <QEvent>class LostFocusFilter : public Q…

自然语言处理:第三十二章HippoRAG:性能提高20% - 受海马体启发的RAG

文章链接: HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models 项目地址: OSU-NLP-Group/HippoRAG: HippoRAG is a novel RAG framework inspired by human long-term memory that enables LLMs to continuously integrate knowledge across e…

2024-06-08 问AI: 大语言模型中,思维链CoT是什么?

文心一言 在大语言模型中&#xff0c;思维链&#xff08;Chain-of-Thought, CoT&#xff09;是一种改进的提示策略&#xff0c;旨在提高大语言模型&#xff08;LLM&#xff09;在复杂推理任务中的性能。以下是对思维链CoT的详细解释&#xff1a; 定义&#xff1a; 思维链CoT是…

利用单调栈思路解决递增关系数据问题

利用单调栈思路解决递增关系数据问题 一、题目描述二、解题思路思路1&#xff1a;思路2&#xff1a; 三、代码实现1&#xff1a;暴力法2&#xff1a;单调栈 一、题目描述 在对数据进行排序的过程中&#xff0c;通常采用取1个数作为主元&#xff0c;通过比较交换&#xff0c;把…

学习分享-注册中心Naocs的优雅上下线

前言 学习微服务-分享一下Naocs的优雅上下线 Nacos Nacos&#xff08;Dynamic Naming and Configuration Service&#xff09;是阿里巴巴开源的一款用于动态服务发现、配置管理和服务管理的系统。Nacos 提供了丰富的功能&#xff0c;以便在分布式系统中进行服务管理和配置管…

Vue3 + TS + Antd + Pinia 从零搭建后台系统(一) 脚手架搭建 + 入口配置

简易后台系统搭建开启&#xff0c;分几篇文章更新&#xff0c;本篇主要先搭架子&#xff0c;配置入口文件等目录 效果图一、搭建脚手架&#xff1a;二、处理package.json基础需要的依赖及运行脚本三、创建环境运行文件四、填充vue.config.ts配置文件五、配置vite-env.d.ts使项目…

二百三十九、Hive——Hive函数全篇

--创建测试数据库test show databases ; create database if not exists test; use test;一、关系运算 1、等值比较&#xff1a; select 1 where 1 1; --1 select 1 where 0 1; --NULL 2、不等值比较&#xff1a;<> select 1 where 1 <> 2; --1 sele…

java 大型企业MES生产管理系统源码:MES系统与柔性化产线控制系统的关系、作用

MES定义为“位于上层的计划管理系统与底层的工业控制之间的面向车间层的管理信息系统”,它为操作人员/管理人员提供计划的执行、跟踪以及所有资源(人、设备、物料、客户需求等)的当前状态。 MES系统与柔性化产线控制系统的关系 MES&#xff08;制造执行系统&#xff09;是一种…

2003NOIP普及组真题 3. 数字游戏

线上OJ 地址&#xff1a; 【03NOIP普及组】数字游戏 此题考察的是 区间DP 前缀和 核心思想&#xff1a; 1、这道题主要考查了动态规划的思想。通过分析题目&#xff0c;可以发现需要 枚举环上所有划分为m组 的不同方案&#xff0c;来求得最大或最小值。属于 环上动态规划 问…

2024.6.7学习记录

1、css面试题复习加整理 2、dp刷题 也是水

动态语言的开源编译器汇总

对于动态语言而言&#xff0c;我们通常不会使用传统意义上的“编译器”&#xff0c;因为动态语言往往是在运行时解释执行的&#xff0c;或者被转换为中间形式&#xff08;如字节码&#xff09;&#xff0c;再由虚拟机执行。不过&#xff0c;为了性能考虑&#xff0c;现代动态语…

阅读笔记——《AFLNET: A Greybox Fuzzer for Network Protocols》

【参考文献】Pham V T, Bhme M, Roychoudhury A. Aflnet: a greybox fuzzer for network protocols[C]//2020 IEEE 13th International Conference on Software Testing, Validation and Verification (ICST). IEEE, 2020: 460-465.【注】本文仅为作者个人学习笔记&#xff0c;…

华媒舍:3步实际操作教大家快速升级活动策划实际效果

什么叫活动策划推广&#xff1f;活动策划推广指通过制定目标与执行一系列活动来推广宣传企业、产品和服务。这种活动可以包括线上与线下宣传营销、社会化营销、品牌合作等各种方式。正确活动策划推广能够帮助企业在竞争激烈的市场中突围&#xff0c;吸引住目标群体并提高销售总…

判断是否是平衡二叉树--c++【做题记录】

【问题描述】 设计算法判断一棵树是否是一棵平衡二叉树。 输入一组数据&#xff0c;按顺序构造出一个二叉排序树&#xff0c;不要平衡化&#xff0c;直接插入数据。判断树是否是平衡二叉树。 【参考算法】 递归算法 bool isBalance(BiNode *bt, int &height) //注意&…

【Java 反射】对于获取修饰符需要知道的事

反射 修饰符返回值 虚拟机规范表4.1、4.4、4.5和4.7中的访问修饰符标志常量 修饰符类型修饰符名称标志值&#xff08;十进制&#xff09;标志值&#xff08;十六进制&#xff09;PUBLIC公共10x00000001PRIVATE私有20x00000002PROTECTED保护40x00000004STATIC静态80x00000008…

堆排序---C语言

堆排序详解&#xff1a;点这里。 使用向下调整算法实现堆排序&#xff0c;完整代码 #include<stdio.h>void Swap(int* p1, int* p2) {int* tmp *p1;*p1 *p2;*p2 tmp; }void Print(int* arr, int n) {for (int i 0; i < n; i){printf("%d ", arr[i]);}…