221. Maximal Square -- 矩阵中1组成的最大正方形
2016-08-25 15:51
357 查看
Given a 2D binary matrix filled with 0's and 1's, find the largest square containing only 1's and return its area.
For example, given the following matrix:
Return 4.
* 1) P[0][j] = matrix[0][j] (topmost row);
* 2) P[i][0] = matrix[i][0] (leftmost column);
* 3) For i > 0 and j > 0:
* 3.1) if matrix[i][j] = 0, P[i][j] = 0;
* 3.2) if matrix[i][j] = 1, P[i][j] = min(P[i-1][j], P[i][j-1], P[i-1][j-1]) + 1.
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.
class Solution { public: inline int min(int x, int y) { return x<y? x:y; } inline int min(int x, int y, int z) { return min(x, min(y, z)); } int maximalSquare(vector<vector<char>>& matrix) { int row = matrix.size(); if (row <=0) return 0; int col = matrix[0].size(); int maxSize = 0; vector<vector<int>> dp(row, vector<int>(col)); for (int i=0; i<matrix.size(); i++) { for (int j=0; j<matrix[i].size(); j++){ //convert the `char` to `int` dp[i][j] = matrix[i][j] -'0'; //for the first row and first column, or matrix[i][j], dp[i][j] is ZERO //so, it's done during the previous conversion // i>0 && j>0 && matrix[i][j]=='1' if (i!=0 && j!=0 & dp[i][j]!=0){ dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1; } //tracking the maxSize if (dp[i][j] > maxSize ){ maxSize = dp[i][j]; } } } return maxSize*maxSize; } };
* 1) P[0][j] = matrix[0][j] (topmost row);
* 2) P[i][0] = matrix[i][0] (leftmost column);
* 3) For i > 0 and j > 0:
* 3.1) if matrix[i][j] = 0, P[i][j] = 0;
* 3.2) if matrix[i][j] = 1, P[i][j] = min(P[i-1][j], P[i][j-1], P[i-1][j-1]) + 1.
相关文章推荐
- [LeetCode] 221. Maximal Square 最大正方形
- 221. Maximal Square (最大正方形)
- LeetCode: 221_Maximal Square | 二维0-1矩阵中计算包含1的最大正方形的面积 | Medium
- 求解最大正方形面积 — leetcode 221. Maximal Square
- LeetCode 221. Maximal Square(最大正方形)
- leetcode 221. Maximal Square 最大正方形面积 + 动态规划DP实现
- 有一个n*n的矩阵,矩阵由 "0"和"1"组成,检测矩阵中的由"1"组成的图形是一个实心的正方形,结果为true或者false
- 求二维数组组成的矩阵中子矩阵的最大值
- 一个M*N的矩阵,元素取值1或0,问如何找到最大的正方形,其所有的元素都为1
- 【BZOJ1057】【ZJOI2007】棋盘制作 最大01子矩阵/正方形
- 【难】【DP】计算bool矩阵中,仅包含1的最大矩形和最大正方形
- 3月20号周五课堂练习:结对开发----求二维数组组成的矩阵中子矩阵的最大值
- 程序员面试金典——解题总结: 9.18高难度题 18.12给定一个正整数和负整数组成的N*M矩阵,编写代码找出元素总和最大的子矩阵。
- 数组与矩阵---边界都是1的最大正方形大小
- Leetcode—221.Maximal Square 最大正方形
- 最大正方形 (Largest Square)
- wikioi 1259 最大正方形子矩阵
- [LeetCode] 01矩阵中最大正方形 Maximal Square
- HDU - 1518 Square (能否组成正方形)
- [LeetCode] Matchsticks to Square 火柴棍组成正方形