zoukankan      html  css  js  c++  java
  • 85. Maximal Rectangle

    https://leetcode.com/problems/maximal-rectangle/description/

    class Solution {
    public:
        int maximalRectangle(vector<vector<char>>& matrix) {
            int m = matrix.size();  if (m == 0) return 0;
            int n = matrix[0].size(); if (n == 0)   return 0;
            vector<int> v(n, 0);
            int res = 0;
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < n; j++) {
                    if (matrix[i][j] == '0')
                        v[j] = 0;
                    else
                        v[j]++;
                }
                res = max(res, helper(v));
            }
            return res;
        }
        int helper(const vector<int>& v) {
            stack<int> s;
            int res = 0;
            for (int i = 0; i <= v.size(); i++) {
                int cur = i == v.size() ? 0 : v[i];
                while (!s.empty() && cur < v[s.top()]) {
                    int idx = s.top();
                    s.pop();
                    int w = s.empty() ? i : i - s.top() - 1;
                    res = max(res, w * v[idx]);
                }
                s.push(i);
            }
            return res;
        }
    };
  • 相关阅读:
    codeforces 1215 E Marbles-----状压DP
    留坑待填
    Catalan数
    砝码称重
    约数和
    硬币题解
    迎春舞会之数字舞蹈
    过剩数
    猜测棋局
    [NOIP普及组2014第三题]螺旋矩阵
  • 原文地址:https://www.cnblogs.com/JTechRoad/p/9062357.html
Copyright © 2011-2022 走看看