1. 程式人生 > >Largest Rectangle in a Histogram[]

Largest Rectangle in a Histogram[]

思路: 按照 1到max(histogram) 逐次查詢最大面積

  1. 高為1 時…
  2. 高為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!")