第二行包含n 个整数h1, h2, … , hn,相邻的数之间由空格分隔。(1 ≤ hi ≤ 10000)。hi是第i个矩形的高度。
输出格式
输出一行,包含一个整数,即给定直方图内的最大矩形的面积。
样例输入
6
3 1 6 5 2 3
样例输出
10
解题的时候出了一些错误后更正,这里把两段代码都放上以作提醒:
# 采用滑动窗口的方式
# 40分 运行超时
a = int(input().strip())
b = [int(z) for z in input().split()]
flag = 0
for width in range(1, a+1): # 窗口大小
for i in range(a-width):
height = min(b[i:i + width])
S = width * height
if S > flag:
flag = S
print(flag)
# 100 分,对每一个bar左右看,看到比自己大的就拓展,否则就跳过
a = int(input().strip())
b = [int(z) for z in input().split()]
S = b[0]
for i in range(a):
gap = 1
for j in range(i - 1, -1, -1): # 向左看
if b[j] >= b[i]:
gap += 1
else:
break
for k in range(i + 1, a): # 向右看
if b[k] >= b[i]:
gap += 1
else:
break
S = max(S, gap * b[i])
print(S)