1277. 统计全为 1 的正方形子矩阵

1277. 统计全为 1 的正方形子矩阵


题目链接:1277. 统计全为 1 的正方形子矩阵

代码如下:

class Solution {
public:
    int countSquares(vector<vector<int>>& matrix) {
        if(matrix.size()==0||matrix[0].size()==0)   return 0;

        //dp[i][j]代表以(i,j)为右下角,且只包含1的正方形边长的最大值
        vector<vector<int>> dp(matrix.size(),vector<int>(matrix[0].size(),0));
        int total=0;

        for(int i=0;i<matrix.size();i++)
        {
            for(int j=0;j<matrix[0].size();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;
                    if(dp[i][j]!=0)
                        total+=dp[i][j];
                }
                    
            }
        }
        return total;
    }
};

你可能感兴趣的:(leetcode,c++)