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;
        }
    };
  • 相关阅读:
    pandas 和反射联合使用
    反射
    获取Cookie 遇到的问题
    接口自动化之 问题
    接口自动化之 数据库操作
    logging日志模块
    数据驱动 --ddt
    logging--日志打印模块
    APP专项测试5 --PFS
    Monkey 参数
  • 原文地址:https://www.cnblogs.com/grandyang/p/5672120.html
Copyright © 2011-2022 走看看