博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Maximal Square
阅读量:6457 次
发布时间:2019-06-23

本文共 1335 字,大约阅读时间需要 4 分钟。

Maximal Square

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

DP

Time Complexity

O(n^n)
Space Complexity
O(n^n)

思路

size 1

1
size 2
1 1
1 1
size 3
1 1 1
1 1 1
1 1 1

dpi the largest all 1 square's size withi as the bottom right (including)/up left

base case
dp0 dp0 dpi
dp rule
dpi = min(dpi-1, dpi, dpi - 1 if matrixi == 1 else 0
keep one global_max

代码

public int maximalSquare(char[][] matrix) {    //corner case    if(matrix == null || matrix.length == 0 || matrix[0] == null || matrix[0].length == 0) return 0;    int rows = matrix.length, cols = matrix[0].length;    int[][] dp = new int[rows][cols];    int max = 0;        for(int i = 0; i < rows; i++){        if(matrix[i][0] == '1') dp[i][0] = 1;        max = Math.max(dp[i][0], max);    }    for(int j = 1; j < cols; j++){        if(matrix[0][j] == '1') dp[0][j] = 1;        max = Math.max(dp[0][j], max);    }    for(int i = 1; i < rows; i++){        for(int j = 1; j < cols; j++){                if(matrix[i][j] == '1'){                    dp[i][j] = Math.min(Math.min(dp[i - 1][j], dp[i][j- 1]), dp[i - 1][j - 1]) + 1;                    max = Math.max(dp[i][j], max);                }        }    }    return max*max;}

Test Cases

null

{}
{null, ...}
{
{}, ...}
{0}
{1}
{
{0 0 0 1 0}}
{
{0},{0},{0},{1},{0}}

转载地址:http://jtizo.baihongyu.com/

你可能感兴趣的文章
大数据Lambda架构
查看>>
openCV_java 图像二值化
查看>>
状态模式
查看>>
删除CentOS / RHEL的库和配置文件(Repositories and configuraiton files)
查看>>
DJANGO变动库的一次真实手动经历
查看>>
VC++获得微秒级时间的方法与技巧探讨(转)
查看>>
HDOJ-1010 Tempter of the Bone
查看>>
MySQL my.cnf参数配置优化详解
查看>>
JavaNIO基础02-缓存区基础
查看>>
日本开设无人机专业,打造无人机“人才市场”
查看>>
190行代码实现mvvm模式
查看>>
PXE部署实例
查看>>
cobbler初探------实现自动安装centos6.4
查看>>
Android Studio 2.0 preview3 BUG
查看>>
兼容几乎所有浏览器的透明背景效果
查看>>
Go语言4
查看>>
jeesite 框架搭建与配置
查看>>
Adb移植(一)简单分析
查看>>
Linux VNC server的安装及简单配置使用
查看>>
阿里宣布开源Weex ,亿级应用匠心打造跨平台移动开发工具
查看>>