문제 : https://leetcode.com/problems/largest-rectangle-in-histogram
클래식 단조로운 스택 항목을 참조하십시오. 스택은 시간의 현재 수보다 작은 것으로 발견 될 때 유지 단조 후 상단 요소는이 큰, 그 스택의 현재 최상위을 계산할 수있다 (스택 내의 다음 요소보다 큰, 또한 현재의 요소보다 큰 경우)이고, 스택 증대 높은 직사각형 영역 및 비교는 큰되지 않습니다.
클래스 해결 { 공개 : INT largestRectangleArea (벡터 < INT > 및 높이) { heights.push_back ( 0 ); INT N = heights.size (); 스택 < INT > STA; INT 입술 = 0 ; 위한 ( int로 I = 0 ; I <N은, 내가 ++ ) { 동안 (! sta.empty () && 높이 [I] <= 높이 [sta.top ()]) { INT의 H = 높이 [sta.top ()] ; () sta.pop; INT왼쪽 sta.empty = ()? - 1 : sta.top (); INT S = H *를 (전 - 좌측 - 1 ); 입술 = 최대 (입술, S); } // COUT << 입술 << " " ; sta.push (I); } 반환 입술을; } };