码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 221 Maximal Square

时间:2015-08-08 09:05:27      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

这题使用动态规划,基本想法是建立一张表table,table[i][j]就标志以点(i, j) 为右下角顶点的正方形最大边长,显然,可以通过table[i - 1][j - 1]来得到

table[i][j]的值(正方形,只需要考虑对角的方向)。

class Solution {
public:
    int maximalSquare(vector<vector<char>>& matrix) {
            int M = matrix.size();
    if(M == 0)
        return 0;
    int N = matrix[0].size();
    if (N == 0)
        return 0;
    vector<vector<int>> table(M);
    for(int i = 0; i < M; i++)
        table[i].resize(N);
    int maxLen = 0;
    for(int j = 0; j < N; j++){
        if(matrix[0][j] == ‘0‘)
            table[0][j] = 0;
        else
            table[0][j]= 1;
        maxLen = max(table[0][j], maxLen);
    }
    for(int i = 0; i < M; i++){
        if(matrix[i][0] == ‘0‘){
            table[i][0]= 0;
        }
        else{
            table[i][0]= 1;
        }
        maxLen = max(table[i][0], maxLen);
    }
    
    for(int i = 1; i < M; i++){
        for(int j = 1; j < N; j++){
            if(matrix[i][j] == ‘1‘) {
                int w = 1;
                int h = 1;
                for (int k = 0; k < table[i - 1][j - 1]; k++) {
                    //for all k in line i
                    if(matrix[i][j - 1 - k] == ‘1‘)
                        w++;
                    else
                        break;
                }
                for (int k = 0; k < table[i - 1][j - 1]; k++) {
                    // for all k in col j
                    if(matrix[i - 1 - k][j] == ‘1‘)
                        h++;
                    else
                        break;
                }
                table[i][j] = min(w, h);
            }
            else{
                table[i][j] = 0;
            }
            maxLen = max(table[i][j], maxLen);
        }
    }
    return maxLen * maxLen;
    }
};

  

leetcode 221 Maximal Square

标签:

原文地址:http://www.cnblogs.com/hustxujinkang/p/4712503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!