리 입 85 최대한 사각형

이 질문은 84 연장이라고 할 수있다. 숫자는, 질문 (84)의 컬럼의 높이로서 생각되는 저부 (1)로부터 계속 될 수있다

클래스 솔루션 (객체)
     DEF LargestRectangleInHistogram (자기, 높이) 
        mystack = [] 
        , 오른쪽 ANS = 0,0
         하면서 오른쪽 < LEN (높이)
             경우 렌 (mystack) == 0 또는 높이 [mystack [-1] <= 높이 [오른쪽] 
                mystack.append (오른쪽) 
                오른쪽 + 1 =
             다른 : 
                IDX = mystack.pop ()
                 동안 LEN (mystack)> 0  높이 [mystack [-1] == 높이 [IDX] mystack .팝()
                왼쪽 = -1 경우 LEN (mystack) == 0 다른 mystack [-1 ] 
                ANS = 최대 (ANS, 높이 [IDX * (좌우-1 ))
         의 경우 LEN (mystack) == 0 : (ANS) 
        오른쪽 = mystack [-1] +1
         동안 mystack : 
            IDX = mystack.pop ()
             동안 LEN (mystack)> 0  높이 [IDX] == 높이 [mystack [-1 ] : mystack.pop () 
            왼쪽 = - 한 경우 렌 (mystack) == 0 다른 mystack [-1 ] 
            ANS = 최대 (ANS, 높이 [IDX * (좌우-1 ))
         #에 인쇄 (ANS) 
        (ANS) 
    
    DEF maximalRectangle (자기 매트릭스)
         "" " 
        : 형 매트릭스리스트 [리스트 [STR] 
        : RTYPE : INT 
        " "" 
        m = LEN (매트릭스)
         의 경우 m == 0 : (0) 
        N = LEN (행렬 [0])
         의 경우 , N == 0 : (0) 
        의 높이 = 맵 (INT, 행렬 [0]) 
        ANS = self.LargestRectangleInHistogram (높이)
         에 대한 I 에서 범위 (1, m)
             에 대한 J 범위 (N)
                 의 경우행렬 [I] [J] == " 0 " : 높이 [j]가 = 0
                 다른 : 높이 [J] + = 1 
            ANS = 최대 (ANS, self.LargestRectangleInHistogram (높이))
          (ANS)

자세한 답변은 유튜브의 basketwang 참조 ( https://www.youtube.com/watch?v=2Yk3Avrzauk )

추천

출처www.cnblogs.com/Leisgo/p/11696180.html