[力扣c++实现]85. 最大矩形

news2024/11/16 17:46:34

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
示例 3:

输入:matrix = [[“0”]]
输出:0
示例 4:

输入:matrix = [[“1”]]
输出:1
示例 5:

输入:matrix = [[“0”,“0”]]
输出:0

提示:

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

1.c++

#include <vector>
#include <iostream>
#include <stack>

class Solution {
public:
    int largestRectangleArea(std::vector<int> &height) {
        std::stack<int> increStack;
        int maxArea = 0;
        height.insert(height.begin(),0);
        height.push_back(0);
        int size = height.size();

        for (int i = 0; i < size; ++i) 
        {
            while (!increStack.empty() && height[increStack.top()] > height[i])
            {
                int h = height[increStack.top()];
                increStack.pop();
                maxArea = std::max(maxArea,(i - increStack.top() - 1)*h);
            }
            
            increStack.push(i);
        }

        return maxArea;
    }

    int maximalRectangle(std::vector<std::vector<char>>& matrix) {
        int row = matrix.size();
        int col = matrix[0].size();
        std::vector<std::vector<int>> intVector(row);
        for (int i = 0 ; i < row;++i)
        {
            intVector[i].resize(col);
            for (int j = 0;j < col;++j)
            {
                intVector[i][j] = matrix[i][j] - 48;
            }
        }

        for (int i = 1 ; i < row;++i)
        {
            for (int j  = 0 ; j < col;++j)
            {
                if (intVector[i][j] != 0)
                {
                    intVector[i][j] += intVector[i-1][j];
                }
            }
        }
        
        int max = 0;
        for (int i = 0;i < row;++i)
        {
            int tmp = largestRectangleArea(intVector[i]);
            max = max > tmp?max:tmp;
        }
        
        return max;
    }
};

int main()
{
    Solution slu;
    std::vector<std::vector<char>> matrix = {{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'},{'1','1','1','1','1'}};
    //坑,当字符相加大于8bit的char所表示的最大值255时继续累加就会报错,就会导致后面的报错
    std::cout << slu.maximalRectangle(matrix) << std::endl;
}

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

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

相关文章

2022最新最全的Java面试八股文小抄开源!带你摸熟 20+ 互联网公司面试考点

2022真是多变的一年&#xff0c;相对往年我们会发现今年猎头电话少了&#xff0c;大部分企业年终奖缩水&#xff0c;加薪幅度也不如往年&#xff0c;选择好 offer 就要趁早&#xff0c;现在开始准备吧&#xff0c;刷一波 Java 面试题&#xff0c;能回答 70%就去 BATJTMD 大胆试…

基于SSM实现的网上手机商城项目(附源码)

基于SpringSpring MVCMyBatisLayui框架 项目完整源码下载 https://download.csdn.net/download/DeepLearning_/87327169 功能&#xff1a; 前台 登录、注册、注销查看商品、商品评论、热销商品收藏、取消收藏商品加入购物车购物车增、删、改、查购买商品、确认收货、删除已…

stop pin/ignore pin/exclude pin/float pin

stop pin、ignore pin、exclude pin和float pin的区别如下图&#xff1a; 1、Stop pins stop pin是clock tree的leaf pin&#xff0c;作为clock tree的终点&#xff0c;需要balance insertion delay&#xff08;latency&#xff09;&#xff0c;clock sink都是stop pin。 2、…

七、http模块

HTTP —— 超文本传输协议&#xff0c;用于规范客户端浏览器和服务端以何种格式进行通信和数据交互&#xff1b;HTTP由请求和响应构成的&#xff0c;是一个标准的客服端服务器模型。 HTTP请求响应过程 先简单的来了解以下HTTP的请求响应过程&#xff1a;1.地址解析&#xff1a…

普通人为什么要学习python?有什么用

为什么要学习python&#xff1f; 比如新媒体职业&#xff1a; 1、简单来说&#xff0c;你会python后就相当于自己建造一个属于自己工作区块的微博热搜榜。你可以利用爬虫、收据抓取等技术知道哪些话题近期特别火&#xff0c;为什么火、有什么共通点&#xff0c;然后根据这些依…

3.1 多集放大电路的耦合方式

在实际应用中&#xff0c;常对放大电路的性能提出多方面的要求。所以&#xff0c;仅靠任何一种基本的放大电路并不能满足要求&#xff0c;此时可以选择多个基本放大电路级联在一起构成多级放大电路。 组成多级放大电路的每一个基本放大电路称为一级&#xff0c;级与级之间的连接…

Win11的两个实用技巧系列之玩游戏闪跳、错误代码0x80004005解决

Win11玩游戏经常无缘无故跳回桌面怎么解决? 最近有Win11用户反应&#xff0c;自己在玩游戏的时候遇到了经常无缘无故跳回桌面的情况&#xff0c;本文就为大家带来了详细的解决方法&#xff0c;需要的朋友一起看看吧 最近有Win11用户反应&#xff0c;自己在玩游戏的时候遇到了…

关于ShardingSphere内置分片算法及其数据倾斜问题总结

ShardingSphere是一款不错的分库分表中间件&#xff0c;并且其内置提供了多种分片算法。但是使用内置的分片算法会造成数据倾斜问题。下面以5.2.0版本的ShardingSphere详细介绍下几种内置分片算法并且分析下数据倾斜问题。 一、ShardingSphere内置分片算法介绍 根据官网描述&…

web前端-javascript-包装类(String,Number,Boolean,基本数据类型调用方法先转换为对象再调换)

包装类 1. 说明 在 JS 中为我们提供了三个包装类&#xff0c;通过这三个包装类可以将基本数据类型的数据转化为对象String() 可以将基本数据类型字符串转换为 String 对象 Number() 可以将基本数据类型的数字转换为 Number 对象 Boolean() 可以将基本数据类型的布尔值转换为 …

【C语言】重要函数atoi的使用

目录 一、atoi函数的介绍 二、atoi函数的使用 三、atoi函数的模拟实现 一、atoi函数的介绍 一个专门将字符串转换为整数的库函数&#xff0c;具体用法如下&#xff1a; 字符串str&#xff0c;将其内容转化为整数&#xff0c;该整数作为int值返回。 二、atoi函数的使用 atoi函…

CentOS7安装apache2并启动

CentOS7安装apache2并启动源码安装启动和停止源码安装 地址&#xff1a;https://downloads.apache.org/httpd/ https://downloads.apache.org/httpd/httpd-2.4.54.tar.gz 参考&#xff1a;https://www.cnblogs.com/xiangqs/p/8663947.html 启动和停止 网上搜到的都是/usr/lo…

linux安装redis

目录 一、准备redis 二、上传redis到linux 三、编译与安装 四、修改配置文件 五、设置开放的服务或端口号或直接关闭防火墙 法1&#xff1a; 法2&#xff1a; 六、验证是否成功 1.直接在linux启动客户端 2.在windows启动redis客户端&#xff0c;连接linux的redis服务…

Java+mysql基于ssm的大学生求职招聘系统

本求职招聘管理系统主要包括系统用户管理模块、企业新闻管理模块、招聘发布会管理、招聘信息管理、登录模块、和退出模块等多个模块。它帮助求职招聘管理实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了求职招聘管理数据资源,有效的减…

Docker方式发布jar文件

在IDEA中将SpringBoot项目打为jar包步骤&#xff1a; 1、打开项目的pom.xml文件&#xff0c;添加或修改packaging标签&#xff0c;如下图&#xff1a; <packaging>jar</packaging> 2、点击右侧maven&#xff0c;展开lifecycle&#xff0c;先clean&#xff0c;然后…

普通人应该怎么赚钱,下班后可在家操作的四个兼职副业分享

大家好&#xff0c;我是蝶衣王的小编 不少朋友发觉&#xff0c;单靠薪水好像已经很难再存下钱了&#xff0c;甚至有时候还不够一个月的开销。实际上&#xff0c;如果你想要提升月收益&#xff0c;你可以选择发展副业。那发展什么副业才能赚钱呢 有小伙伴要问&#xff1a;我要…

使用DevEco Device Tool编译并烧录全部步骤和过程详解

一、前言 我们上一篇讲了 “如何搭建设备开发的环境” ,这一篇继续上一篇提到的BearPi-HM_Nano 源码 我购买的是这款 BearPi开发板,有设备的话更好,没有设备的话,一样可以跟着我们的文章一起学习。 在进行编译烧录前需要先下载BearPi-HM_Nano 源码,我们接着往下看。 二…

【漏洞复现】软件漏洞——栈溢出漏洞复现及其原理详解 一文解明什么是栈溢出漏洞

软件漏洞造成软件漏洞原因:如何预防?软件漏洞常见名词栈溢出漏洞复现前准备造成软件漏洞原因: 本质原因是因为人类目前还没办法在原点上区分数据与代码,说白了就是目前人们还没理解编写安全代码的真正方法。 如何预防? 通过修改自身代码、公共库函数的安全性降低漏洞出现频…

springboot 定时任务基础模板

springboot 如何开启定时任务 基础版本 一、在启动类上面加上 EnableScheduling 即可开启定时 SpringBootApplication EnableAsync EnableScheduling public class ScheduleApplication {public static void main(String[] args) {SpringApplication.run(ScheduleApplicatio…

ios xcode Architectures

各个Architecture参数的含义 Architectures 当前设备环境下支持的指令架构。真机环境下是armV7、arm64。模拟器环境下是X86_64、i386、arm64&#xff08;m1设备&#xff09;。 Build Active Architecture Only 是否只编译当前设备的指令架构。值是YES或者NO。一般Debug环境…

什么是数据管理?看完这篇你一定有收获

如今的大数据成为一切生产经营活动的主要驱动因素。由于每天都会产生大量数据&#xff0c;因此我们需要有更好的数据管理解决方案是理所当然的。任何想要在今天取得成功的企业或企业都需要了解数据管理的内容、原因和方式。 大数据&#xff0c;就其本质而言&#xff0c;需要一…