LeetCode DP(3)
LeetCode T221.最大正方形
关键在于状态转移方程的推理🤔
题目描述:
在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。
示例:

输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]] 输出:4
思路:

代码:
class Solution { public: int maximalSquare(vector<vector<char>>& matrix) { int row = matrix.size(), col = matrix[0].size(), ans = 0; vector<vector<int>> dp(row, vector<int>(col)); if(row == 0 || col == 0) return 0; for(int i = 0; i < row; i++) { for(int j = 0; j < col; j++) { if(matrix[i][j] == '1') { if(i == 0 || j == 0) { dp[i][j] = 1; } else { dp[i][j] = min(min(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1]) + 1; } ans = max(ans, dp[i][j]); } } } return ans * ans; } };

浙公网安备 33010602011771号