221. 最大正方形 Python

文章目录

  • 一、题目描述
      • 示例 1
      • 示例 2
      • 示例 3
  • 二、代码
  • 三、解题思路


一、题目描述

在一个由 '0''1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。

示例 1

在这里插入图片描述

输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
输出:4

示例 2

在这里插入图片描述

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

示例 3

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

提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 300
matrix[i][j] 为 '0' 或 '1'

二、代码

代码如下:

import numpy as np
class Solution:def maximalSquare(self, matrix: List[List[str]]) -> int:row = len(matrix)col = len(matrix[0])result = 0for i in range(row):for j in range(col):if matrix[i][j] == "0":continueelif i != 0 and j != 0:if matrix[i][j-1] and matrix[i-1][j] and matrix[i-1][j-1] and int(matrix[i][j-1]) >0 and  int(matrix[i-1][j]) >0 and int(matrix[i-1][j-1]) >0:matrix[i][j] = str(min(int(matrix[i][j-1]),int(matrix[i-1][j]),int(matrix[i-1][j-1])) + 1)if int(matrix[i][j]) > result:result = int(matrix[i][j])print(result**2)return result**2

三、解题思路

本题考验的对于数组的遍历判断操作,需要我们找出由1构成的最大的正方形面积。本题解采用动态规划的方法,由于当前所判断的结果对于之后的判断也有用上,所以使用动态规划的方法较好,如果采用暴力遍历的方式的话,则会导致运算超时。
具体思路如下:
以当前的坐标[i][j]为例,需要判断的是当前坐标的左,上,左上这3个点,对应的坐标为[i][j-1],[i-1][j],[i-1][j-1](如果坐标存在的话),判断这3个点是否都是大于0的,如果是,并且当前坐标[i][j]不为0,则以上这4个点可以构成一个更大的正方形;如果不是,或者当前坐标[i][j]等于0,则无法构成更大的正方形。
如果能够构成更大的正方形,则当前坐标[i][j]则需要进行更新,更新方式为:选取其左、上、左上3个坐标中的最小值 + 1。
最后在每次进行更新操作时,记录下当前更新后的最大值,返回其平方数即可。

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

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

相关文章

公网中Linux系统下Redis使用注意事项以及被pnscan病毒攻击的经过

一次惨痛的教训&#xff1a;被pnscan病毒攻击的经过&#xff08;公网中Linux系统下Redis使用注意事项&#xff09; 0.案发情况pnscan病毒感染惨状&#xff1a;>>提示<< 1.案发原因2.排查过程简单排查之后&#xff0c;发现啥都做不了。先百度到了如下文章&#xff1…

mac垃圾清理软件有哪些

随着使用时间的增加&#xff0c;mac系统会产生一些垃圾文件&#xff0c;影响系统的性能和稳定性。为了保持mac系统的高效&#xff0c;用户需要定期使用mac垃圾清理软件来清理系统缓存、日志、语言包等无用文件。CleanMyMac是一款功能强大的mac垃圾清理软件&#xff0c;它可以帮…

计算机网络(10) --- 高级IO

计算机网络&#xff08;9&#xff09; --- 数据链路层与MAC帧_哈里沃克的博客-CSDN博客数据链路层与MAC帧https://blog.csdn.net/m0_63488627/article/details/132178583?spm1001.2014.3001.5501 1.IO介绍 1.IO本质 1.如果数据没有出现&#xff0c;那么读取文件其实会被阻塞住…

vue 使用print.js打印小票

官网&#xff1a;https://printjs.crabbly.com/ // 安装 npm install print-js --save// 引入 import printJS from print-js// 使用 printJS({printable: https://hwke.tbbug.com/images/phone/1899ed9346f64020ff4f9bbae6983952.jpg,type: image,imageStyle: width:100%;ma…

MySQL使用binlog日志做数据恢复

MySQL的binlog日志是MySQL日志中非常重要的一种日志&#xff0c;记录了数据库所有的DML操作。通过binlog日志我们可以进行数据库的读写分离、数据增量备份以及服务器宕机时的数据恢复。 定期备份固然可以在服务器发生宕机的时候快速的恢复数据&#xff0c;但传统的全量备份不可…

【Qt编译】GL/gl.h:No such file or directory

GL/gl.h:No such file or directory原因 缺少libgl相关库引起 解决办法&#xff1a; yum -y install libglade2-devel yum -y install libglade2-help yum -y install libglvnd-devel

安装Node(脚手架)

目录 一&#xff0c;安装node&#xff08;脚手架&#xff09;1.1&#xff0c; 配置vue.config.js1.2&#xff0c; vue-cli3x的目录介绍1.3&#xff0c; package.json 最后 一&#xff0c;安装node&#xff08;脚手架&#xff09; 从官网直接下载安装即可&#xff0c;自带npm包管…

scratch计算圆的面积和周长 2023年5月中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析

目录 scratch计算圆的面积和周长 一、题目要求 1、准备工作 2、功能实现 二、案例分析

视频转云存的痛点

现在整个运营商体系里面&#xff0c;有大量的视频转云存储的需求&#xff0c;但是视频云存储有一个比较大的痛点&#xff0c;就是成本&#xff01; 成本一&#xff1a;存储成本&#xff1b; 我们以1000路2M视频转云存&#xff0c;存储时间为90天为例&#xff08;B端存储时间有…

windows下nginx配置为服务

​ 1.下载winswx。 下载地址&#xff1a;winsw下载 2.解压后将其重命名为“nginx-service”,并将其放到nginx目录下。 3.新建一个文本文档内容如下&#xff1a;&#xff08;里面的路径根据自己的情况修改&#xff09; <service> <id>nginx</id> <name&…

数据结构,队列,顺序表队列,链表队列

队列是一种常见的数据结构&#xff0c;它具有先进先出&#xff08;First-In-First-Out&#xff0c;FIFO&#xff09;的特性&#xff0c;类似于排队等候的场景。以下是队列的要点&#xff1a; 1. 定义&#xff1a;队列是一种线性数据结构&#xff0c;由一系列元素组成&#xff…

Matplotlib学习笔记

Matplotlib数据可视化库 jupyter notebook优势 画图优势&#xff0c;画图与数据展示同时进行。数据展示优势&#xff0c;不需要二次运行&#xff0c;结果数据会保留。 Matplotlib画图工具 专用于开发2D图表以渐进、交互式方式实现数据可视化 常规绘图方法 子图与标注 想要…

高性能网络模式-Reactor

事实上&#xff0c;Reactor 模式也叫Dispatcher模式&#xff0c;即I/O 多路复⽤监听事件&#xff0c;收到事件后&#xff0c;根据事件类型分配&#xff08;Dispatch&#xff09;给某个进程/线程。Reactor 模式也是一种非阻塞同步网络模式。 Reactor 模式主要由 Reactor部分和处…

OLED透明屏报价:如何选择高性价比的产品

OLED透明屏作为一项创新的显示技术&#xff0c;其透明度和高清晰度的特点使其在各个领域得到了广泛应用。 然而&#xff0c;在购买OLED透明屏时&#xff0c;消费者往往会面临多样的报价和产品选择。本文将基于相关数据和报告&#xff0c;为您详细介绍OLED透明屏的报价因素&…

银行数字化转型程度-根据年报词频计算(2012-2021年)

银行数字化转型程度是根据银行年报中的数字化相关词频计算所得的数据。这一数据包括数字化词频关键词、以及数字化转型程度&#xff0c;反映了银行数字化转型的程度和进展情况。从经济学研究的角度来看&#xff0c;这一数据具有重要的参考价值。 首先&#xff0c;银行数字化转…

SHELL 基础 入门(三) Bash 快捷键 命令执行顺序,详解通配符

目录 Bash 常用快捷键 输入输出重定向 << 用法 输出重定向 命令执行顺序 ; 分号 && || 通配符 传统通配符 &#xff1f; * [ ] [ - ] [ ^ ] 常用字符 强调 &#xff1a; { } 生成序列 Bash 常用快捷键 Ctrl A 把光…

Matlab绘制灰度直方图

直方图是根据灰图像绘制的&#xff0c;而不是彩色图像通。查看图像直方图时候&#xff0c;需要先确定图片是否为灰度图&#xff0c;使用MATLAB2019查看图片是否是灰度图片&#xff0c;在读取图片后在MATLAB界面的工作区会显示读取的图像矩阵&#xff0c;如果是&#xff0c;那么…

Redis过期数据的删除策略

1 介绍 Redis 是一个kv型数据库&#xff0c;我们所有的数据都是存放在内存中的&#xff0c;但是内存是有大小限制的&#xff0c;不可能无限制的增量。 想要把不需要的数据清理掉&#xff0c;一种办法是直接删除&#xff0c;这个咱们前面章节有详细说过&#xff1b;另外一种就是…

ssh连接相关

1. SSH简介 简单说&#xff0c;SSH是一种网络协议&#xff0c;用于计算机之间的加密登录。如果一个用户从本地计算机&#xff0c;使用SSH协议登录另一台远程计算机&#xff0c;我们就可以认为&#xff0c;这种登录是安全的&#xff0c;即使被中途截获&#xff0c;密码也不会泄…

MyBatis使用 resultMap中collection过滤空字段

在使用MyBatis查询数据时&#xff0c;返回值可以定义为resultMap。 如果返回的对象中有列表&#xff0c;还可以使用collection标签进行定义。 此时&#xff0c;如果不想某些字段为空的数据加入列表&#xff0c;可以使用notNullColumn属性进行定义&#xff1a; <resultMap…