zoukankan      html  css  js  c++  java
  • [LintCode] Maximal Square 最大正方形

    Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and return its area.

     
    Example

    For example, given the following matrix:

    1 0 1 0 0
    1 0 1 1 1
    1 1 1 1 1
    1 0 0 1 0
    

    Return 4.

    LeetCode上的原题,请参见我之前的博客Maximal Square

    解法一:

    class Solution {
    public:
        /**
         * @param matrix: a matrix of 0 and 1
         * @return: an integer
         */
        int maxSquare(vector<vector<int> > &matrix) {
            if (matrix.empty() || matrix[0].empty()) return 0;
            int m = matrix.size(), n = matrix[0].size(), res = 0;
            vector<vector<int>> sum = matrix;
            for (int i = 0; i < m; ++i) {
                for (int j = 0; j < n; ++j) {
                    int t = sum[i][j];
                    if (i > 0) t += sum[i - 1][j];
                    if (j > 0) t += sum[i][j - 1];
                    if (i > 0 && j > 0) t -= sum[i - 1][j - 1];
                    sum[i][j] = t;
                    int cnt = 1;
                    for (int k = min(i, j); k >= 0; --k) {
                        int d = sum[i][j];
                        if (i - cnt >= 0) d -= sum[i - cnt][j];
                        if (j - cnt >= 0) d -= sum[i][j - cnt];
                        if (i - cnt >= 0 && j - cnt >= 0) d += sum[i - cnt][j - cnt];
                        if (d == cnt * cnt) res = max(res, d);
                        ++cnt;
                    }
                }
            }
            return res;
        }
    };
  • 相关阅读:
    作业3
    字符串的应用
    java类与对象
    作业
    水仙花数
    java例
    读书笔记(构建之法-11.19)
    补psp进度(11月4号-9号)
    PSP进度(11~16)
    团队项目-约跑软件需求规格说明书
  • 原文地址:https://www.cnblogs.com/grandyang/p/5672120.html
Copyright © 2011-2022 走看看