leetcode 221 最大正方形

最大正方形

在这里插入图片描述

高刷题

dp里存的是最大的正方形边长

class Solution {
    
    
public:
    int maximalSquare(vector<vector<char>>& matrix) {
    
    
        int result = 0;
        int m = matrix.size() , n = matrix[0].size();
        vector<vector<int>> dp(m,vector<int>(n,0));

        for(int i=0 ; i<m ; i++)
        {
    
    
            if(matrix[i][0] == '1') dp[i][0] = 1;
            if(dp[i][0] > result) result = dp[i][0];
        }
            
        
        for(int j=0 ; j<n ; j++)
        {
    
    
            if(matrix[0][j] == '1') dp[0][j] = 1;
            if(dp[0][j] > result) result = dp[0][j];
        }
            
        
        for(int i=1; i<m ;i++)
        {
    
    
            for(int j=1 ; j<n ; j++)
            {
    
    
                if(matrix[i][j] == '1')
                {
    
    
                    dp[i][j] = min( dp[i-1][j-1] , min( dp[i-1][j],dp[i][j-1])) + 1;
                    if(dp[i][j] > result) result = dp[i][j];
                }
            }
        }
        return result*result;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_44814825/article/details/129810404