이 질문은 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 )