当前位置: 首页 > news >正文

leetcode221.最大正方形

最大正方形

可以使用动态规划降低时间复杂度。用 dp(i,j) 表示以 (i,j)为右下角,且只包含 111 的正方形的边长最大值。能计算出所有 dp(i,j)的值,那么其中的最大值即为矩阵中只包含 111 的正方形的边长最大值,其平方即为最大正方形的面积。

如果该位置的值是 0,则 dp(i,j)=0,因为当前位置不可能在由 111 组成的正方形中;

如果该位置的值是 111,则 dp(i,j)的值由其上方、左方和左上方的三个相邻位置的 dp值决定。具体而言,当前位置的元素值等于三个相邻位置的元素中的最小值加 111,状态转移方程如下:

dp(i,j)=min(dp(i−1,j),dp(i−1,j−1),dp(i,j−1))+1
其中1277. 统计全为 1 的正方形子矩阵的官方题解给出了详细的证明。

此外,还需要考虑边界条件。如果 i 和 j中至少有一个为 0,则以位置 (i,j)为右下角的最大正方形的边长只能是 1,因此 dp(i,j)=1。

#include<bits/stdc++.h>
using namespace std;
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public:int maximalSquare(vector<vector<char>>& matrix) {int m = matrix.size();int n = matrix[0].size();int dp[m][n];for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {dp[i][j] = -1;}}int ans = 0;for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {if (matrix[i][j] == '0'){dp[i][j] = 0;continue;}if (i == 0 || j == 0){dp[i][j] = 1;}else{dp[i][j] = min(min(dp[i][j - 1], dp[i - 1][j - 1]), dp[i - 1][j]) + 1;}ans = max(ans, dp[i][j]);}}return ans * ans;}
};
//leetcode submit region end(Prohibit modification and deletion)int main(){Solution s;vector<vector<char>> num = {{'1', '0', '1', '0', '0'}, {'1', '0', '1', '1', '1'}, {'1', '1', '1', '1', '1'}, {'1', '0', '0', '1', '0'}};int a = s.maximalSquare(num);cout<<(a);return 0;
}

相关文章:

leetcode221.最大正方形

最大正方形 可以使用动态规划降低时间复杂度。用 dp(i,j) 表示以 (i,j)为右下角&#xff0c;且只包含 111 的正方形的边长最大值。能计算出所有 dp(i,j)的值&#xff0c;那么其中的最大值即为矩阵中只包含 111 的正方形的边长最大值&#xff0c;其平方即为最大正方形的面积。 …...

低代码技术这么香,如何把它的开发特点发挥到极致?

前言 什么是低代码技术&#xff1f; 低代码是一种可视化软件开发方法&#xff0c;通过最少的编码更快地交付应用程序。图形用户界面和拖放功能使开发过程的各个方面自动化&#xff0c;消除了对传统计算机编程方法的依赖。 文章目录 前言低代码平台怎么选&#xff1f;用友Yonbu…...

drawio简介以及下载安装

drawio简介以及下载安装 drawio是一款非常强大的开源在线的流程图编辑器&#xff0c;支持绘制各种形式的图表&#xff0c;提供了 Web端与客户端支持&#xff0c;同时也支持多种资源类型的导出。 访问网址&#xff1a;draw.io或者直接使用app.diagrams.net直接打开可以使用在线版…...

Sql Server 数据库中的所有已定义的唯一约束 (列名称 合并过了)

查询Sql Server Database中的唯一约束 with UniqueBasic as (SELECTtab.name AS TableName, -- 表名称idx.name AS UniqueName, -- 唯一约束的名称col.name AS UniqueFieldName -- 唯一约束的表字段FROMsys.indexes idxJOIN sys.index_columns idxColON (idx.object_id idxCo…...

elasticsearch (六)filebeat 安装学习

filebeat 安装&#xff1a;文件节拍快速入门&#xff1a;安装和配置 |文件节拍参考 [7.17] |弹性的 (elastic.co) 解压缩后&#xff0c;以配置nginx日志为例。 Nginx module | Filebeat Reference [7.17] | Elastic filebeat 配置中&#xff0c; - module: nginx access: …...

算法通关村第一关|青铜|链表笔记

1.理解 Java 如何构造出链表 在 Java 中&#xff0c;我们创建一个链表类&#xff0c;类中应当有两个属性&#xff0c;一个是结点的值 val &#xff0c;一个是该结点指向的下一个结点 next 。 next 通俗讲是一个链表中的指针&#xff0c;但是在链表类中是一个链表类型的引用变量…...

【记录】使用Python读取Tiff图像的几种方法

文章目录 PIL.Imagecv2gdal 本文总结了使用 PIL Image, cv2, gdal.Open三种python package 读取多通道Tiff格式遥感影像的方法。 PIL.Image PIL对Tiff只支持两种格式的图像&#xff1a; 多通道8bit图像单通道int16, int32, float32图像 多通道多bit的tiff图像PIL不支持读取…...

JOSEF约瑟 多档切换式漏电(剩余)继电器JHOK-ZBL1 30/100/300/500mA

系列型号&#xff1a; JHOK-ZBL多档切换式漏电&#xff08;剩余&#xff09;继电器&#xff08;导轨&#xff09; JHOK-ZBL1多档切换式漏电&#xff08;剩余&#xff09;继电器 JHOK-ZBL2多档切换式漏电&#xff08;剩余&#xff09;继电器 JHOK-ZBM多档切换式漏电&#xf…...

Linux部署kubeedge 1.4

文章目录 一、机器信息二、环境准备&#xff08;所有节点操作&#xff09;2.1. 修改主机名2.2. 开启路由转发2.3.安装Docker&#xff08;所有节点&#xff09;2.4.部署K8S集群(单机版&#xff0c;云端节点) 2.5.安装Mosquitto&#xff08;只在边缘节点安装)三、安装kubeedge 1.…...

第一章习题

文章目录 x ( t ) j e j w 0 t x(t)je^{jw_0t} x(t)jejw0​t x [ n ] j e j w 0 n x[n]je^{jw_0n} x[n]jejw0​n 求基本周期&#xff1a; T 2 Π w 0 T\frac{2Π}{w_0} Tw0​2Π​ 对x[n],T为有理数才算 1、求信号x(t)2cos(10t1)-sin(4t-1)的基波周期 2 Π 10 Π 5 \frac{2…...

nvm、node、npm解决问题过程记录

在Windows10如何降级Node.js版本&#xff1a;可以尝试将Node.js版本降级到一个较旧的版本&#xff0c;以查看问题是否得以解决。可以使用Node Version Manager (nvm) 来轻松切换Node.js版本&#xff0c;具体完整步骤&#xff1a; 首先&#xff0c;需要安装Node Version Manager…...

Linux- DWARF调试文件格式

基本概念 DWARF是一个用于在可执行程序和其源代码之间进行关联的调试文件格式。当开发者使用调试编译选项&#xff08;例如&#xff0c;使用gcc时的-g标志&#xff09;编译程序时&#xff0c;编译器会生成这种格式的调试信息。这些信息在后续的调试过程中非常有用&#xff0c;…...

软件工程第六周

软件体系结构概述 体系结构&#xff1a;一种思想&#xff0c;而框架就是思想的实现&#xff0c;设计模式就是根据某一特殊问题实现的框架。 体系结构&#xff1a;体系结构是软件系统的高级结构。它定义了系统的主要组成部分&#xff0c;以及这些部分之间的关系和交互方式。 框…...

node+pm2安装部署

1、安装node 下载node安装包&#xff1a; wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz 解压&#xff1a; tar -xvJf node-v14.17.0-linux-x64.tar.xz 配置环境变量&#xff0c;在/etc/profile文件最后添加以下脚本&#xff1a; export PATH$P…...

大数据学习(11)-hive on mapreduce详解

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博>主哦&#x…...

MyBatis基础之自动映射、映射类型、文件注解双配置

文章目录 自动映射原理jdbcType同时启用配置文件和注解两种配置方式 自动映射原理 在 MyBatis 的配置文件&#xff08;settings 元素部分&#xff09;中&#xff0c;有一个 autoMappingBehavior 配置&#xff0c;其默认值为 PARTIAL &#xff0c;表示 MyBatis 会自动映射&…...

8、docker 安装 nginx

1、下载镜像 docker pull nginx 2、本机创建目录 1&#xff09;创建nginx挂载目录 mkdir /usr/local/nginx 2&#xff09;进入nginx目录 cd /usr/local/nginx 3&#xff09;创建 www和logs目录 mkdir -p www logs 3、创建nginx容器 此容器用于复制配置文件&#xff0c;复…...

关于Skywalking Agent customize-enhance-trace对应用复杂参数类型取值

对于Skywalking Agent customize-enhance-trace 大家应该不陌生了&#xff0c;主要支持以非入侵的方式按用户自定义的Span跟踪对应的应用方法&#xff0c;并获取数据。 参考https://skywalking.apache.org/docs/skywalking-java/v9.0.0/en/setup/service-agent/java-agent/cust…...

手机路径、Windows路径知识及delphiXE跨设备APP自动下载和升级

手机路径、Windows路径知识 及delphiXE跨设备APP自动下载和升级 一、APP安装程序文件版本和权限信息 1、运行时动态调用Android apk的AndroidManifest.xml获取versionName 2、运行时动态调用IOS ipa的info.plist获取CFBundleVersion &#xff08;和entitlements&#xff09…...

GitLab 502问题解决方案

由于最近 gitlab 切换到另一台服务器上部署的 gitlab 后&#xff0c;经常出现 502。平时重启 gitlab 后都能解决&#xff0c;今天突然重启多次后都还是 502&#xff08;重启日志是正常的&#xff09;&#xff0c;遂通过 gitlab-ctl tail 查看日志进行排查。 gitlab-ctl tail通…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...