美文网首页
Largest Rectangle in Histogram

Largest Rectangle in Histogram

作者: lmem | 来源:发表于2016-12-26 00:46 被阅读64次
Paste_Image.png

求连续矩形最大面积,抓住一点,当如果有顺序的时候很容易求得结果,过意可以借助于栈来调整为有顺序。参考网上的解法。
自己用动态规划实现了一下,时间还超限。

class Solution(object):
    """
    :type heights: List[int]
    :rtype: int
    """
    def largestRectangleArea(self, heights):
        if len(heights) == 0:
            return 0
        stack = [heights[0]]
        Max = 0
        for i in range(1,len(heights)):
            #按照升序序列
            if heights[i] >= stack[-1]:
                stack.append(heights[i])
            else:#将序
                temp = stack.pop()
                Max = max(Max,temp)
                index = 1
                while len(stack)!=0 and stack[-1] > heights[i]:
                    temp = stack.pop()
                    index += 1
                    Max=max(temp*index ,Max)
                for j in range(index+1):
                    stack.append(heights[i])
        for i in range(len(stack)):
            Max = max(Max,stack[i]*(len(stack)-i))
        return Max

动态规划

class Solution(object):
    """
    :type heights: List[int]
    :rtype: int
    """
    def largestRectangleArea(self, heights):
        L = []
        Max = 0
        for i in range(len(heights)):
            L.append([])
            for j in range(1,heights[i]+1):
                if i==0:
                    t = j
                    L[i].append(t)
                else:
                    if len(L[i-1]) < j:
                        t = j
                        L[i].append(t)
                    else:
                        t = j+L[i-1][j-1]
                        L[i].append(t)
                if ( t > Max):
                    Max = t
        return Max


s= Solution()
print(s.largestRectangleArea([2,1,5,6,2,3]))



相关文章

网友评论

      本文标题:Largest Rectangle in Histogram

      本文链接:https://www.haomeiwen.com/subject/alndvttx.html