package com.app.main.LeetCode.dynamic;
/**
*
* 221
*
* medium
*
* https://leetcode.com/problems/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.
*
* Example:
*
* Input:
*
* 1 0 1 0 0
* 1 0 1 1 1
* 1 1 1 1 1
* 1 0 0 1 0
*
* Output: 4
*
* Created with IDEA
* author:Dingsheng Huang
* Date:2019/12/20
* Time:下午4:43
*/
public class MaximalSquare {
public int maximalSquare(char[][] matrix) {
int max = 0;
if (matrix.length == 0) {
return 0;
}
int[][] dp = new int[matrix.length][matrix[0].length];
for (int i = 0; i < matrix[0].length; i++) {
if (matrix[0][i] == '1') {
dp[0][i] = 1;
max = 1;
}
}
for (int i = 0; i < matrix.length; i++) {
if (matrix[i][0] == '1') {
dp[i][0] = 1;
max = 1;
}
}
for (int i = 1; i < matrix.length; i ++) {
for (int j = 1; j < matrix[0].length; 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(max, dp[i][j]);
}
}
}
return max * max;
}
}
LeetCode--221--medium--MaximalSquare
猜你喜欢
转载自blog.csdn.net/huangdingsheng/article/details/103809854
今日推荐
周排行