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;
    }
};

 

posted @ 2021-12-31 21:43  HM-7  阅读(32)  评论(0)    收藏  举报