求最大矩形面积
给定一个x,y轴单位长度为1的直方图,求解其最大矩形面积。
如下图,输入:[2,9,5,7,3],其最大矩形面积为15:
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
示例1
输入例子:
[2,9,5,7,3]
输出例子:
15
本题重点在于按照顺序依次遍历求出满足条件的值,注意在获取当前囊括的区间范围后,要以最小值作为计算该矩形面积的高。其次,以当前所遍历的值作为矩形最左边的高,依次往右推进。
#coding:utf-8
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param histogram int整型一维数组
# @return int整型
#
class Solution:
def histogram_max_area(self , histogram ):
# write code here
maxarea=0
for leftindex in range(len(histogram)):
for rightindex in range(leftindex,len(histogram)):
if rightindex!=len(histogram)-1:
nowarea=(rightindex-leftindex+1)*min(histogram[leftindex:rightindex+1])
if nowarea>maxarea:
maxarea=nowarea
else:
nowarea=(rightindex-leftindex+1)*min(histogram[leftindex:])
if nowarea>maxarea:
maxarea=nowarea
return maxarea