【leetcode】221. 最大正方形

#define min(a,b) ((a)<(b))?(a):(b)
int maximalSquare(char** matrix, int matrixSize, int* matrixColSize){
    int* row = (int*)calloc(*matrixColSize, sizeof(int));
    int* cnt = (int*)calloc(*matrixColSize, sizeof(int));
    //int row[301] = { 0 }; 
    //int cnt[301] = { 0 };
    int i, j, maxLen=0;
    for (i = 0; i < matrixSize; i++)
    {
        for (j = 0; j < *matrixColSize; j++){
            row[j] = (matrix[i][j] == '1') ? row[j] + 1 : 0;
            if (row[j] > maxLen){
                cnt[j] = (j)?cnt[j - 1] + 1 :1;
                if (cnt[j] > maxLen){
                    maxLen = min(row[j], cnt[j]);
                    cnt[j] = 0;
                }                    
            }
            else{
                cnt[j] = 0;
            }
        }
    }
    return maxLen*maxLen;
}
原文地址:https://www.cnblogs.com/ganxiang/p/14199018.html