全球彩票平台_全球彩票注册平台|官网下载地址

热门关键词: 全球彩票平台,全球彩票注册平台,全球彩官网下载地址

全球彩票注册平台LeetCode Maximal Rectangle浅析

LeetCode Maximal Rectangle浅析

LeetCode Largest Rectangle in Histogram

[LeetCode]*85.Maximal Rectangle

题目

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

思路

全球彩票注册平台 1

对此上图的七个01矩阵。大家能够一行一行的深入分析,假使第三行,我们按列扫描,蒙受0时,柱子断开,重新酿成柱子,境遇1时柱子高度加一。那样的话,我们就足以把难题转变为[LeetCode]*84.Largest Rectangle in Histogram求解最大矩形面积。

全球彩票注册平台 2
代码< 喎?" target="_blank" class="keylink">vc3Ryb25nPjwvcD4NCjxwcmUgY2xhc3M9"brush:java;"> /*--------------------------------------- * 日期:2015-05-14 * 作者:SJF0115 * 题目: 85.Maximal Rectangle * 网址:https://leetcode.com/problems/maximal-rectangle/ * 结果:AC * 来源:LeetCode * 博客: -----------------------------------------*/ #include #include #include using namespace std; class Solution { public: int maximalRectangle(vector>& matrix) { int row = matrix.size(); if(row == 0){ return 0; }//if int col = matrix[0].size(); vector > height(row,vector(col,0)); // 计算每一行的高度 int h; for(int j = 0;j < col; j){ h = 0; for(int i = 0;i < row; i){ if(matrix[i][j] == '1'){ h; }//if else{ h = 0; }//else height[i][j] = h; }//for }//for /*for(int i = 0;i < row; i){ for(int j = 0;j < col; j){ cout<<< <

运行时间

``

<

Rectangle 题目 Given a 2D binary matrix filled with 0s and 1s, find the largest rectangle containing all ones and return its area. 思路 对于上海教室的四个...

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

题目

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

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 6.

LeetCode解题之Maximal Rectangle


LeetCode解题之Largest Rectangle in Histogram


思路:本题给你包括0和1的矩阵,使你找寻含有1的最大矩阵,并重回其面积。这道题可以枚举出全数矩阵求出在那之中的最大范围,若是枚举出中度和幅度,时间复杂度要到O(n^4)了,那么我们得以这么从矩阵的左上角的职位上马,这样计算以某一点为左上角的矩阵的最大规模。

解题之法

class Solution {
public:
    int maximalRectangle(vector<vector<char> > &matrix) {
        int res = 0;
        vector<int> height;
        for (int i = 0; i < matrix.size();   i) {
            height.resize(matrix[i].size());
            for (int j = 0; j < matrix[i].size();   j) {
                height[j] = matrix[i][j] == '0' ? 0 : (1   height[j]);
            }
            res = max(res, largestRectangleArea(height));
        }
        return res;
    }
    int largestRectangleArea(vector<int> &height) {
        int res = 0;
        stack<int> s;
        height.push_back(0);
        for (int i = 0; i < height.size();   i) {
            if (s.empty() || height[s.top()] <= height[i]) s.push(i);
            else {
                int tmp = s.top();
                s.pop();
                res = max(res, height[tmp] * (s.empty() ? i : (i - s.top() - 1)));
                --i;
            }
        }
        return res;
    }
};

原题

一个矩阵仅包蕴1和0,搜索里面面积最大的只蕴涵1的矩形,并回到它的面积。

注意点:

矩阵中的成分类型是字符串

例子:

输入:

matrix = 
[['1', '1', '0', '1', '0', '1'],
 ['0', '1', '0', '0', '1', '1'],
 ['1', '1', '1', '1', '0', '1'],
 ['1', '1', '1', '1', '0', '1']]

输出: 8

原题

给定多少个柱状图,求它能包涵的最大的矩形的面积。如下图中阴影部分就是要求的矩形。

全球彩票注册平台 3

注意点:

有着的柱的上涨的幅度都为1

例子:

输入: heights = [2,1,5,6,2,3]

输出: 10

1.中度为1时,宽度为率先行中从第八个职分起连年的1的个数,那样求出其面积

分析

此题是事先这道的 Largest Rectangle in Histogram 直方图中最大的矩形 的扩张,那道题的二维矩阵每一层发展都能够看成二个直方图,输入矩阵有稍许行,就能够产生多少个直方图,对各种直方图都调用 Largest Rectangle in Histogram 直方图中最大的矩形 中的方法,就足以拿走最大的矩形面积。
那正是说那道题唯一要做的正是将每一层构成直方图,由于标题限定了输入矩阵的字符唯有'0' 和 '1' 三种,所以拍卖起来也针锋绝对简便易行。方法是,对于每二个点,假设是‘0’,则赋0,即使是 ‘1’,就赋 在此以前的height值加上1。

本文由全球彩票平台发布于全球彩票注册平台编程,转载请注明出处:全球彩票注册平台LeetCode Maximal Rectangle浅析

TAG标签: 全球彩票平台
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。