[LintCode/LeetCode] Maximal Square

news/2025/5/24 2:05:01

Problem

Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and return its area.

Example

For example, given the following matrix:

1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0
Return 4.

Note

类似这种需要遍历矩阵或数组来判断True or False,或者计算最优解(最短步数,最大距离,etc)的题目,都可以使用递归。
所以,找矩阵内存在的最大正方形,需要:

  1. 构造传递方程:用dpi存储以当前点matrixi作为正方形右下角顶点,所存在的最大正方形的边长,由matrixi左、上、左上三点的dp值共同判定;

  2. 初始化边界:matrix的第一列和第一行;

  3. 自顶向下递推dp并更新max,找到max的最大值求平方得最优解。

Corresponding dp matrix:

0 0 0 0 0 0 
0 1 0 1 0 0
0 1 0 1 1 1
0 1 1 1 2 2
0 1 0 0 1 0

mLen = 2, the maximum dp[i] = 2 appeared twice, indicating that there are two maximal squares.

Solution

public class Solution {public int maxSquare(int[][] matrix) {int mLen = 0;int m = matrix.length, n = matrix[0].length;int[][] dp = new int[m+1][n+1];for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (matrix[i-1][j-1] == 1) {dp[i][j] = Math.min(dp[i-1][j-1], Math.min(dp[i-1][j], dp[i][j-1]))+1;mLen = Math.max(mLen, dp[i][j]);}}}return mLen * mLen;}
}

https://dhexx.cn/news/show-1398938.html

相关文章

你不知道的JavaScript——闭包

文章目录简介闭包作用域缓存如何消除闭包模块化简介 这是《你不知道的JavaScript》系列的第二个比较重要的内容&#xff0c;闭包。在没有仔细研究过闭包的机制前&#xff0c;我对他的了解可能仅仅是函数中返回一个函数&#xff0c;且该函数引用了上一个函数的成员变量。下面我…

vue 组件通信的几种方式

文章目录简介$refs$parent / \$children$provide / \$inject父传子父传孙子冲突问题$attrs / \$listener$attrs$listener继承父传孙总结简介 这篇文章主要来聊聊&#xff0c;vue 中进行组件之间通信的几种方式。以及一些细节问题和优劣 $refs 通过在组件中绑定 refname 属性…

iOS-UIWebView 请求百度数据加载到页面 同步/异步/NSURLSession

2019独角兽企业重金招聘Python工程师标准>>> interface ViewController ()<NSURLConnectionDelegate,NSURLConnectionDataDelegate>{NSMutableData *netData; // 拼装网络数据 }endimplementation ViewController- (void)viewDidLoad {[super viewDidLoad];//…

this 深度解析

this 深度解析 这是《你不知道的JavaScript》第三节&#xff0c;深入了解 this 的含义&#xff0c;以及如何判断 this 的指向。 this 是什么 首先我们要知道 this 到底是什么。我认为&#xff0c;this 更像是一个关键字&#xff0c;他最终可能会指向某个对象&#xff08;也有…

新年遇到的证书签名无效问题

1&#xff0c;按照中间证书链接下载&#xff0c;https://developer.apple.com/certificationauthority/AppleWWDRCA.cer&#xff0c;并安装。 2&#xff0c; 在keychains里选择login,然后点选Certificates&#xff0c;在这个界面&#xff0c;选择工具栏的View -> Show Expir…

北京国家会计学院聂兴凯:用友BIP事项会计助力企业迈入智能会计时代

近日&#xff0c;由用友主办的「智能会计 价值财务」2023企业数智化财务创新峰会北京站在北京国家会计学院圆满举办。来自知名院校的专家学者、央国企等大型企业财务领路人&#xff0c;以及权威财经媒体相约北京国家会计学院&#xff0c;一同见证“智能会计”新时代的到来&…

android中,显示圆形图片

2019独角兽企业重金招聘Python工程师标准>>> 在android开发中&#xff0c;有些时候&#xff0c;我们需要对图片进行处理&#xff0c;让它以圆形的方式显示出来。这时&#xff0c;我们需要重写ImageView这个控件&#xff0c;即继承它&#xff0c;然后重写onDraw这个方…

AWStats日志分析系统

部署AWStats日志分析系统AWStats可以为Apache,samba,vsftpd,IIS等服务进行日志分析这里我们对Apache网站进行日志分析安装AWStats软件包为要统计的站点建立配置文件进入交互式操作之后的几步都是按Enter键画箭头上方的路径是我们配置为之后&#xff0c;要访问的AWStats日志分析…

上传图片校验图片类型、大小及尺寸

一、校验图片的类型、大小 function imageVerify(file, size) {//判断上传的文件后缀是否否和规范for(var i 0; i < file.length; i) {var fileSuffix file[i].name.substr(file[i].name.indexOf("."));//判断图片上传的格式if(fileSuffix ! ".jpg…