zoukankan      html  css  js  c++  java
  • Maximal Square || LeetCode

    dp.

    #define MAX 1000
    int rowLeft[MAX][MAX];
    int colUp[MAX][MAX];
    int dp[MAX][MAX];
    void calRow(char **matrix,int matrixRowSize,int matrixColSize){
        int i,j;
        for(i=0;i<matrixRowSize;++i){
            for(j=0;j<matrixColSize;++j)
            {
                if(matrix[i][j]=='1')
                {
                    if(j==0)rowLeft[i][j]=1;
                    else rowLeft[i][j]=rowLeft[i][j-1]+1;
                }
                else rowLeft[i][j]=0;
            }
        }
    }
    void calCol(char **matrix,int matrixRowSize,int matrixColSize){
        int i,j;
        for(i=0;i<matrixRowSize;++i)
        {
            for(j=0;j<matrixColSize;++j)
            {
                if(matrix[i][j]=='1'){
                    if(i==0)colUp[i][j]=1;
                    else colUp[i][j]=colUp[i-1][j]+1;
                }
                else colUp[i][j]=0;
            }
        }
    }
    int min(int a,int b,int c){
        int t;
        t=(a<b?a:b);
        t=(t<c?t:c);
        return t;
    }
    int maximalSquare(char** matrix, int matrixRowSize, int matrixColSize) {
        int i,j,maxSquare=0;
        calRow(matrix,matrixRowSize,matrixColSize);
        calCol(matrix,matrixRowSize,matrixColSize);
        for(i=0;i<matrixRowSize;++i)
        {   for(j=0;j<matrixColSize;++j)
            {
                if(i==0||j==0)
                    dp[i][j]=(matrix[i][j]=='1'?1:0);
                else dp[i][j]=min(dp[i-1][j-1]+1,rowLeft[i][j],colUp[i][j]);
                maxSquare=(maxSquare>dp[i][j]?maxSquare:dp[i][j]);
            }
        }
        return maxSquare*maxSquare;
    }
    

      

    我这个空间复杂度有点高

  • 相关阅读:
    基于opencv的摄像头的标定
    图像的角点简介
    周转时间和平均带权时间等
    QT各个版本的下载的地址
    参考文献格式
    sublime中的emmet插件的使用技巧
    sublime快捷键
    CSS布局居中
    Markdown 语法说明(简体中文版)
    sql作业题
  • 原文地址:https://www.cnblogs.com/ProtectedDream/p/4555635.html
Copyright © 2011-2022 走看看