leetcode-85. 最大矩形

news2024/11/23 15:24:34

题目描述

给定一个仅包含 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

思路

逐行累积,每次一行累加完,就去计算柱状图中最大的矩形:leetcode-84. 柱状图中最大的矩形-CSDN博客【先做84题,在做本题】

class Solution(object):
    def max_area(self, heights):
        heights = [0]+heights+[0] # 这里以后改成这么写
        res = 0
        stack = [0]
        for i in range(1, len(heights)):
            if heights[i]>heights[stack[-1]]:
                stack.append(i)
            elif heights[i] == heights[stack[-1]]:
                stack.pop()
                stack.append(i)
            else:
                while stack and heights[i]<heights[stack[-1]]:
                    mid = stack[-1]
                    stack.pop()
                    if stack:
                        right = i
                        left = stack[-1]
                        w = right-left-1
                        h = heights[mid]
                        res = max(res, w*h)
                stack.append(i)
        return res
    def maximalRectangle(self, matrix):
        """
        :type matrix: List[List[str]]
        :rtype: int
        """
        m,n = len(matrix), len(matrix[0])
        heights = [0]*n
        max_area = 0
        # 助行累加
        for i in range(m):
            for j in range(n):
                if matrix[i][j]=='1':
                    heights[j]+=1
                else:
                    heights[j] = 0
            max_area = max(max_area, self.max_area(heights))
        return max_area

if __name__ == '__main__':
    s = Solution()
    # matrix = [["1"]]
    matrix = [["1", "0", "1", "0", "0"],
              ["1", "0", "1", "1", "1"],
              ["1", "1", "1", "1", "1"],
              ["1", "0", "0", "1", "0"]]
    # matrix = [["1","0"],["1","0"]]
    print(s.maximalRectangle(matrix))

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

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

相关文章

【Cursor教程】探索Cursor颠覆编程体验的创新工具!教程+示例+快捷键

文章目录 Cursor的全新定义Cursor的灵活订阅模式使用Cursor轻松创建支付页面Cursor的快捷键使用指南Cursor的未来展望Cursor的实际应用案例案例一&#xff1a;快速原型开发示例 案例二&#xff1a;教育培训示例 案例三&#xff1a;企业内部工具开发示例 更多的选择结语 在当今技…

turtlebot3使用

roslaunch turtlebot3_gazebo turtlebot3_house.launch roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:/home/hou/maps/housemap/map.yaml 以下为melodic版本 其他版本的ros命令有区别 …

SQL优化 where谓词条件OR优化

1.测试表&#xff0c;及测试语句where条件中OR对应两个字段选择度很高 create table t618 as select * from dba_objects; select object_name from t618 where (object_id12043 or DATA_OBJECT_ID12043) and STATUSVALID; 2.没有索引情况下&#xff0c;全表扫描逻辑读…

vue项目中使用drive.js元素未定位成功

在使用drive.js时&#xff0c;button我设了一个id 但是在使用时却定位失败 只要在mounted设置setTimeout即可

算法-依据先序遍历和中序遍历构建二叉树

简单的二叉树遍历算法&#xff0c; 为了通过给定的先序遍历&#xff08;preorder&#xff09;和中序遍历&#xff08;inorder&#xff09;数组构造二叉树&#xff0c;我们需要理解这两种遍历方式的特点&#xff1a; 先序遍历&#xff08;Preorder&#xff09;&#xff1a;首先…

基于SpringBoot+Vue+MySQL的药品信息管理系统

系统展示 管理员界面 医生界面 员工界面 系统背景 随着医疗技术的不断提升&#xff0c;药品在治疗疾病中扮演着越来越重要的角色。传统的药品管理方式以人工方式为主&#xff0c;但人工管理难以满足现代社会快速发展的需求。因此&#xff0c;需要一种更加高效、便捷的信息化管理…

作为一个直播运营,需要关注哪些数据指标?

在直播电商这一高度竞争且日新月异的行业中&#xff0c;作为直播运营的专业人士&#xff0c;若未能充分利用先进工具并紧密关注一系列核心数据指标&#xff0c;将难以推动直播间的持续成长与突破&#xff0c;且在达到一定规模后极易陷入停滞不前的困境。 本人在直播带货领域深耕…

Redis数据结构和使用场景

背景 Redis提供了丰富且结构简单的数据结构类型&#xff0c;在开发中被大量使用&#xff0c;接下来就来盘点下Redis的各种常用数据结构&#xff0c;以及他们的内部编码实现和使用场景。 数据结构 String 字符串类型是Redis最基础的数据结构。首先键都是字符串类型&#xff0c…

Bootstrap 5 练习 - 显示工具提示

文章目录 引言准备工作创建HTML文件导入Bootstrap 5框架编写页面代码编写JavaScript脚本浏览网页注意事项结束语 引言 大家好&#xff0c;今天我们将一起学习如何在Bootstrap 5中创建一个简单的工具提示&#xff08;Tooltip&#xff09;。工具提示是一个非常实用的用户界面元素…

常见大模型架构模式

以下是几种常见的大模型架构模式&#xff1a; 1. 路由分发架构模式 工作原理 当用户输入一个Prompt查询时&#xff0c;该查询会被发送到路由转发模块。路由转发模块对输入Prompt进行分类。如果Prompt查询是可以识别的&#xff0c;那么它会被路由到小模型进行处理。小模型通常具…

【SQL】收入更高的员工

目录 语法 需求 示例 分析 代码 语法 FROM Employee a, Employee b 两个表之间笛卡尔积&#xff08;Cartesian product&#xff09;的形式&#xff0c;用了逗号分隔的连接&#xff08;comma-separated join&#xff09;&#xff0c;这是早期SQL语法中用于连接表的一种方式…

SpringWeb运行流程

文章目录 定义工作流程springWeb的配置1.导入相关依赖2.在web.xml中配置DispatcherServlet3.开启springMVC注解4.处理器类搭建 定义 SpringWeb&#xff0c;也叫spring MVC,是spring框架中的一个模块&#xff0c;基于servlet API构建的原始web框架,ssm为springspringWebmybatis…

AILabel

官方文档&#xff1a;https://gitee.com/JoinXin/AILabel 定义 AILabel类库是一款集打点、线段、多段线、矩形、多边形、圆圈、涂抹等多标注形式于一体&#xff0c;附加文本&#xff08;Text&#xff09;、标记&#xff08;Marker&#xff09;、缩略图&#xff08;EagleMap&…

SpringBoot配置入门

Spring Boot 概述 Build Anything with Spring Boot&#xff1a;Spring Boot is the starting point for building all Spring-based applications. Spring Boot is designed to get you up and running as quickly as possible, with minimal upfront configuration of Spring…

汽车行业线上预约小程序源码系统 在线预约试驾+贷款计算器 带完整的安装代码包以及搭建部署教程

系统概述 这款汽车行业线上预约小程序旨在为用户提供一个全方位了解汽车信息、轻松预约试驾、快速计算购车贷款成本的一站式服务平台。整个系统采用现代化的设计理念和技术架构&#xff0c;确保用户界面友好且响应迅速。同时&#xff0c;针对企业端&#xff0c;该平台还支持后…

利用特征点采样一致性改进icp算法点云配准方法

1、index、vector 2、kdtree和kdtreeflann 3、if kdtree.radiusSearch(。。。) > 0)

系统开发基础错题解析二【软考】

目录 前言1.人机界面设计2.架构设计2.1管道过滤器体系2.2仓库风格 3.软件测试相关概念4.白盒测试用例4.14.2 5.测试分类与阶段任务划分6.软件维护类型7.软件质量保证8.软件过程改进 前言 本文专门用来记录本人在做软考中有关系统开发基础的错题&#xff0c;我始终认为教学相长…

电脑插上U盘不显示怎么回事?怎么解决?

平时使用电脑的时候经常会使用U盘来传输数据或是备份文件&#xff0c;有时候会遇到一个令头疼的问题&#xff0c;比如&#xff0c;将U盘插入电脑的USB口后&#xff0c;设备却显示不出来。电脑上插入U盘后却不显示会影响我们的正常工作。接下来&#xff0c;我们一起分析一下故障…

Linux云计算 |【第四阶段】RDBMS2-DAY2

主要内容&#xff1a; 数据读写分离概述、Maxscale实现数据读写分离、多实例配置、中间件概述 一、数据读写分离概述 数据读写分离&#xff08;Read/Write Splitting&#xff09;是一种数据库架构设计模式&#xff0c;旨在提高数据库系统的性能、可扩展性和可用性。通过将读操…

Machine Learning Specialization 学习笔记(6)

文章目录 前言一、协同过滤二进制标签均值归一化 二、基于内容的过滤三、PCA算法降低特征数量PCAPCA和线性回归重建 四、强化学习回报与折扣因子马尔科夫决策过程状态动作值函数定义&#xff1a;作用&#xff1a;学习过程&#xff1a;Qfunction 贝尔曼方程random stochastic en…