#84 Largest Rectangle in Histogra——Top 100 Liked Questions

Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.

 

#84  Largest Rectangle in Histogra——Top 100 Liked Questions
Above is a histogram where width of each bar is 1, given height =[2,1,5,6,2,3].

 

#84  Largest Rectangle in Histogra——Top 100 Liked Questions
The largest rectangle is shown in the shaded area, which has area = 10 unit.

 

Example:

Input: [2,1,5,6,2,3]
Output: 10

 

第一次:暴力解法,时间超时:遍历每个元素,设定两个指针left和right,初始值均为i,找height[i]两边比其大的元素,遇到比其小的就停止,当左右两边都没有比height[i]大的元素时,计算面积:height[i] * (right-left+1),并更新最大面积

class Solution(object):
    def largestRectangleArea(self, heights):
        """
        :type heights: List[int]
        :rtype: int
        """
        if not heights:
            return 0
        m = len(heights)
        res = 0
        
        for i in range(0, m):
            left, right = i, i
            while left - 1 >= 0 and heights[left - 1] >= heights[i]:
                left = left - 1
            while right + 1 <= m - 1 and heights[right + 1] >= heights[i]:
                right = right + 1
            area = heights[i] * (right - left + 1)
            res = max(area, res)
        return res


Time Limit Exceeded

上一篇:LeetCode每日刷题Day15---L1051高度检查器


下一篇:栈和队列类型题