思路: 按照 高
从1到max(histogram)
逐次查找最大面积
- 高为1 时…
- 高为2 时…
- …
# Largest Rectangle in a Histogram
#
def largest_histogram(histogram):
max_area=max(histogram)
for x in range(1,max(histogram)):
count_1=0
for y in histogram:
if y>=x:
count_1+=1
if max_area<x*count_1 :
max_area=x*count_1
else:
count_1=0
return max_area
if __name__ == "__main__":
#These "asserts" using only for self-checking and not necessary for auto-testing
assert largest_histogram([5]) == 5, "one is always the biggest"
assert largest_histogram([5, 3]) == 6, "two are smallest X 2"
assert largest_histogram([1, 1, 4, 1]) == 4, "vertical"
assert largest_histogram([1, 1, 3, 1]) == 4, "horizontal"
assert largest_histogram([2, 1, 4, 5, 1, 3, 3]) == 8, "complex"
print("Done! Go check it!")