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

示例:

输入:

1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0

输出: 4

来源:力扣(LeetCode)

解题思路
给定矩阵每一个1 代表边长为1的正方形,0代表不存在;
dp[dp[i][$j]存储当前位置的的最大边长

这边使用循环 遍历方式存储可能存在的值

1.x 代表矩阵的列数,x代表矩阵的列数,y代表矩阵的行数
2.当i==0||i==0∣∣j==0||matrix[matrix[i][j]==0,将对应位置的值存入 3.j]==0,将对应位置的值存入3.dp[i][i][j]=min(dp[dp[i-1][j],j],dp[i-1][i−1][j-1],dp[dp[i][$j-1])+1;
利用min()函数比较获取边长中是否存在0,存在重新开始;
4.边长相乘

代码
class Solution {

/**
* @param String[][] $matrix
* @return Integer
*/
function maximalSquare($matrix) {
$x = count($matrix[0]); //列数
$y = count($matrix); //行数
$max=0;
for($i=0;$i<$y;$i++){
for($j=0;$j<$x;$j++){
if($i==0||$j==0||$matrix[$i][$j]==0){
$dp[$i][$j]=$matrix[$i][$j];
}else{
$dp[$i][$j]=min($dp[$i-1][$j],$dp[$i-1][$j-1],$dp[$i][$j-1])+1;

}
if($dp[$i][$j]>$max)
$max=$dp[$i][$j];
}
}
return $max*$max;
}

PHP算法之统计全为 1 的正方形子矩阵的更多相关文章

  1. leetcode-165周赛-1277-统计全为1的正方形子矩阵

    题目描述: 自己的提交: class Solution: def countSquares(self, matrix: List[List[int]]) -> int: if not matri ...

  2. JVM垃圾回收算法(最全)

    JVM垃圾回收算法(最全) 下面是JVM虚拟机运行时的内存模型: 1.方法区 Perm(永久代.非堆) 2.虚拟机栈 3.本地方法栈 (Native方法) 4.堆 5.程序计数器 1 首先的问题是:j ...

  3. Java实现 蓝桥杯VIP 算法训练 统计字符次数

    算法训练 统计字符次数 时间限制:1.0s 内存限制:512.0MB 输入一个字符串(长度在100以内),统计其中数字字符出现的次数. 样例输入 Ab100cd200 样例输出 6 import ja ...

  4. Java实现 蓝桥杯VIP 算法提高 统计单词数

    算法提高 统计单词数 时间限制:1.0s 内存限制:512.0MB 问题描述 统计输入英文文章段落中不同单词(单词有大小写之分, 但统计时忽略大小写)各自出现的次数. 输入段落中所含单词的总数不超过1 ...

  5. 51nod1158 全是1的最大子矩阵

    跟最大子矩阵差不多O(n3)扫一下.有更优写法?挖坑! #include<cstdio> #include<cstring> #include<cctype> #i ...

  6. 51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1158 1158 全是1的最大子矩阵  基准时间限制:1 秒 空 ...

  7. 51nod 1158 全是1的最大子矩阵

    题目链接:51nod 1158 全是1的最大子矩阵 题目分类是单调栈,我这里直接用与解最大子矩阵类似的办法水过了... #include<cstdio> #include<cstri ...

  8. (lintcode全部题目解答之)九章算法之算法班题目全解(附容易犯的错误)

    --------------------------------------------------------------- 本文使用方法:所有题目,只需要把标题输入lintcode就能找到.主要是 ...

  9. Meisell-Lehmer算法(统计较大数据里的素数)

    http://acm.hdu.edu.cn/showproblem.php?pid=5901 1e11的数据量,这道题用这个算法花了202ms. #include<bits/stdc++.h&g ...

随机推荐

  1. 天道神诀---FTP服务

    FTP 2种模式 主动模式(默认) 客户端以1024-65535之间某一端口发送指令到服务端的21端口,并建立连接.服务端接受到以后,以20端口去连接客户端,建立一条新的链接并传输数据 被动模式 客户 ...

  2. 防止DDOS攻击有效方法:隐藏服务器真实IP

    如今,网站服务器的安全受到越来越多的重视,但是难免会遇到黑客使用DDoS攻击网站,为了网站的安全通常都会做好防御,其中防止DDoS攻击有效方法:隐藏服务器真实IP ,该技术能够有效地保护网站的安全. ...

  3. SDL系列之 - 字体显示测试

    例9.7:设计一个程序,初始化视频子系统,设置显示模式为640*480,表面的色深为16位,使用SDL_ttf库在屏幕上显示“Linux下TrueType字体显示示例”,字体大小为38,颜色为红色.设 ...

  4. python接口自动化(post请求)

    python接口自动化(post请求) 一.post请求的作用:新增资源 二.data格式的参数请求(data是字典对象) #1.导包 import requests #2.调用post方法 #请求的 ...

  5. C语言指针函数和函数指针

    #include <stdio.h> char *test(); void test1(); int main() { /********************************* ...

  6. python 如何写好main函数

    每个程序员在学习编程的过程中,肯定没少写过main()函数,Python程序员也不例外.本文为大家分享Python之父Guido van Rossum推荐的函数写法,可以大大提高这个函数的灵活性. 一 ...

  7. JavaWeb 二维码

    说明 相关包 zxing-core3.3 zxing-javase3.3 junit4.12 POM文件 <dependency> <groupId>com.google.zx ...

  8. break , continue 和 标签 跳出循环

    break跳出代码块或循环 var i = 0: while ( i <= 10){ console.log(' i '); i ++; if ( i === 5 ) break; }// 0 ...

  9. 程序‘vim’已包含在下列软件包中

    解决方法: 输入:sudo apt-get install ctags 输入:sudo apt-get install vim 输入:sudo ./config.sh (亲测有效)输入:vim tes ...

  10. delphi xe10 手机程序事件服务操作、退出键操作

    //程序事件服务操作 var FMXApplicationEventService: IFMXApplicationEventService; begin if TPlatformServices.C ...