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

[Leetcode] Largest Rectangle in Histogram

时间:2015-08-14 18:27:21      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

首先感谢网友的分享[1] [2]

一、找单调递增的序列,当遇到第一个递减元素的时候进行面积的计算。为什么这个时候可以进行面积的计算?

假设当前的序列为:

.....,2,4,5,6,3,......

那么我们可以确定2之前的元素都是比2小的,现在遇到了第一个递减元素3,那么此时4->6,5->6,6->之间面积可以计算了,因为3的存在后面的所有矩形面积不会以4,5,6开头,因为他们最多到达4,5,6,原因是这里的4,5,6都比3要大。

二、通过上面的方式,实际上我们找到了某个元素的右边界,如何找到左边界,也就是这个高度开始发生作用的索引位置:在上面的面积计算当中就可以找到,也就是最后一次面积计算当中,所对应的index

对于上面的例子是4所对应的索引位置。

再举一个例子,

2,4,5,6,3,5,2.5当检测到5的时候状态为:

index height

0    ,2

1    ,3

5    ,5

在检测到2.5是发生面积计算过程

对于5,5计算为(5-5+1)*5=5

对于1,3计算为(5-1+1)*3=15

0,2不再满足计算条件,结束,同时得到一个新的pair 1,2.5

这里2.5的起始index为什么是1,因为 1,3 是最后一个满足上面计算条件的位置,他的起始位置是在1,满足的都应该是大于2.5的位置,3所对应的位置都是大于等于3的,所以一定大于等于2.5

在前面的小于2.5的元素本身就不可能和2.5配对,所以他的的起始位置即使再大也不会成为和2.5配对的元素。

 

[1] http://m.blog.csdn.net/blog/SUN20082567/37566967

[2] http://blog.csdn.net/beiyetengqing/article/details/8258232

[Leetcode] Largest Rectangle in Histogram

标签:

原文地址:http://www.cnblogs.com/deepblueme/p/4730656.html

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