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

数据结构--单调栈--求最大子矩阵的大小

时间:2018-05-03 23:37:01      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:bubuko   区域   font   ima   png   image   两种   分享   多少   

求最大子矩阵的大小
给定一个整型矩阵map, 其中的值只有0和1两种, 求其中全是1的所有矩形区域中, 最大的矩形区域为1的数量。
例如:
1 1 1 0
其中, 最大的矩形区域有3个1, 所以返回3。
再如:
1 0 1 1
1 1 1 1
1 1 1 0
其中, 最大的矩形区域有6个1, 所以返回6。

解:技术分享图片将其放到一个矩阵中,同时从第0行开始计算,以该行打底时,直方图的最大面积

如第0行,数组为[1, 0, 1, 1] 此时按照下面的求直方图最大面积。

然后以第1行打底,此时数组为[2, 1, 2, 2],同理求直方图最大面积

然后以第2行打底,此时数组为[3, 2, 3, 0

注:数组的大小是按照它这一行开始,一列中有多少个连续的1来计算的。

 



 

类似的题目:给定一个数组,表示的是每个位置的直方图的高度,求直方图中连续部分的最大面积

技术分享图片

解:利用单调栈,构成一个有栈底到栈顶是从小到大的结构,当要入栈的元素num小于栈顶元素时,栈顶元素出栈,同时对该元素左右能到达的边界进行记录,这样以这个元素为中心的面积就可以求出来了。

数据结构--单调栈--求最大子矩阵的大小

标签:bubuko   区域   font   ima   png   image   两种   分享   多少   

原文地址:https://www.cnblogs.com/SkyeAngel/p/8987860.html

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