您的位置:首页 > 其它

LeetCode *** 221. Maximal Square

2016-04-24 18:04 381 查看
题目:

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

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:
int maximalSquare(vector<vector<char>>& matrix) {
int m = matrix.size();
if (m<1)return 0;
int n = matrix[0].size(), res = INT_MIN;

int dp[m]
={0};

for (int i = 0; i<m; ++i) {
for (int j = 0; j<n; ++j) {
if (matrix[i][j] == '1') {
if (i > 0 && j > 0) {
if (matrix[i - 1][j - 1] == '1'&&matrix[i - 1][j] == '1'&&matrix[i][j - 1] == '1') {
if (dp[i - 1][j - 1] == dp[i - 1][j] && dp[i - 1][j] == dp[i][j - 1])
dp[i][j] = (int)pow(sqrt(dp[i - 1][j - 1]) + 1, 2);
else {
int x = min(dp[i - 1][j - 1], dp[i - 1][j]);
x = min(x, dp[i][j - 1]);
dp[i][j] = (int)pow(sqrt(x) + 1, 2);
}
}
else dp[i][j] = 1;
}
else dp[i][j] = 1;
}
else dp[i][j] = 0;

res = max(dp[i][j], res);
}
}

return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: