在一个由 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. 基础补充(四)——流程控制之if、while、for,break与continue

     流程控制 一.流程控制之if……else…… if 条件1: 缩进的代码块 elif 条件2: 缩进的代码块 elif 条件3: 缩进的代码块 ...... else: 缩进的代码块 二.流程控制之 ...

  2. 详解Telecom

    学习目标: 掌握Telecom入口和分析方法 总结和演进Telecom交互模型 掌握Listener消息回调机制 学习CallsManager 为什么选择Telecom分析? 这是由于在Android ...

  3. java-day21

    # DQL:查询语句     1. 排序查询         * 语法:order by 子句             * order by 排序字段1 排序方式1 ,  排序字段2 排序方式2... ...

  4. JQuery on绑定click无效的的bug解决办法?

    如果你在移动端使用zepto.js, touch 来代替click事件,那就没有上述标题的问题了.如果你仍然使用了click,在点击事件中苹果机就可能出现无效的结果. 第一种方法: 解决的方法很巧妙, ...

  5. akka-stream之异常处理

    背景介绍 在项目中使用了akk-stream的source.queue功能,如下: Pair<SourceQueueWithComplete<Integer>, Source< ...

  6. Vue下渐变效果有时候失效

    记录一个问题:我在项目中给按钮设置一个渐变属性,调试的时候有时候有效果,有时候又没有,代码如下: .training-right-bmz { background: -webkit-linear-gr ...

  7. codeforces750E New Year and Old Subsequence 矩阵dp + 线段树

    题目传送门 思路: 先看一个大牛的题解 题解里面对矩阵的构造已经写的很清楚了,其实就是因为在每个字符串都有固定的很多中状态,刚好可以用矩阵来表达,所以$(i,j)$这种状态可以通过两个相邻的矩阵的$m ...

  8. Boost.Interprocess

    https://github.com/svebert/InterprocessMsg 好像消息队列

  9. docker一键部署zookeeper

    version: '3.1' services: zoo1: image: zookeeper:3.4.11 restart: always hostname: zoo1 container_name ...

  10. ES6 简化对象写法

    简化的对象写法 * 省略同名的属性值 * 省略方法的function <!DOCTYPE html> <html lang="en"> <head&g ...