Path: blob/master/languages/python/coding_made_simple/max_rect_area.py
1240 views
"""1Title: Maximum Rectangular Area in Histogram2Video link: https://youtu.be/ZmnqCZp9bBs34Java code: https://github.com/mission-peace/interview/blob/master/src/com/interview/stackqueue/MaximumHistogram.java56"""78class MaximumHistogram:910def maxHistogram(self, _input):11stack = []12max_area = 013area = 014i = 015while i < len(_input):16if len(stack) == 0 or stack[-1] <= _input[i]:17stack.append(i)18i += 119else:20top = stack.pop(-1)2122if len(stack) == 0:23area = _input[top] * i24else:25area = _input[top] * (i - stack[-1] - 1)2627max_area = max(area, max_area)2829while stack:30top = stack.pop(-1)3132if len(stack) == 0:33area = _input[top] * i34else:35area = _input[top] * (i - stack[-1] - 1)3637max_area = max(area, max_area)3839return max_area404142if __name__ == "__main__":43_input = [2,2,2,6,1,5,4,2,2,2,2]44mh = MaximumHistogram()45print((mh.maxHistogram(_input)))46assert mh.maxHistogram(_input) == 12, "Algorithm did not specify the correct result."4748495051525354