Question
Given an array of integers heights
representing the histogram’s bar height where the width of each bar is 1
, return the area of the largest rectangle in the histogram.
Example 1:
Input: heights = [2,1,5,6,2,3] Output: 10 Explanation: The above is a histogram where width of each bar is 1. The largest rectangle is shown in the red area, which has an area = 10 units.
Example 2:
Input: heights = [2,4] Output: 4
Constraints:
1 <= heights.length <= 105
0 <= heights[i] <= 104
Python Solution
class Solution: def largestRectangleArea(self, A: List[int]) -> int: stack = [] maxi = 0 i = 0 while i<len(A): if len(stack)==0 or A[stack[-1]]<=A[i]: stack.append(i) i+=1 else: top = stack.pop() if len(stack)==0: ar = A[top]*(i) else: ar = A[top]*(i-stack[-1]-1) maxi = max(maxi,ar) while len(stack)!=0: top = stack.pop() if len(stack)==0: ar = A[top]*(i) else: ar = A[top]*(i-stack[-1]-1) maxi = max(maxi,ar) return(maxi)