설명 제목 :
최소 운영 요소를 달성하기 위해 스택에 기본 기능을 달성하기 위해, 다음 리턴 스택을 특별한 스택을 구현합니다.
[조건]
(1). 시간 복잡도 팝업 푸시는 getMin 연산은 O (1).
2. 디자인의 스택 타입은 기성품 스택 구조를 선택적으로 사용할 수 있습니다.
문제 해결 방안을 :
보조 스택의 사용은 최소한의 스택은 현재 내부 유지
코드 구현 :
. 1 급 GetMin 2 { . 3 공개 : . 4 공극 PushData는 ( INT A) . (5) { . 6 Data.push (A)] . 7 IF (Min.empty는 ()) . 8 Min.push (A)는, // 번호가 저장되지 않았을 때 현재 스택의 최소값은 최초의 번호이다 9. 다른 10 Min.push (Min.top () <= A? Min.top는 () : a)] .도 11 // 새로운 스택이 최소한의 수에 첨가 최소 및 데이터와 같은 스택의 높이를 유지하기 위해, 새로운 최소에 저장된 비교 값 (12) } (13)는 14 INT getTop () 15 { 16 IF(Data.size ()) 17 리턴 Data.top (); 18 창 - 1 ; 19 } 20 21 INT의 theMin () 22 { 23 일 경우 (Data.size ()) 24 리턴 Min.top (); 25 리턴 - 1 ; 26 } 27 28 공극 PopData () 29 { 30 의 경우 (Data.size ()) 31 { 32 Data.pop (); 33 Min.pop (); (34) } 35 } 36 37 개인 : 38 스택 < INT > 데이터; 39 스택 < INT > 분; 40 }; 41 42 공극 테스트 () 43 { 44 개 GetMin의 SS; 45 ss.PushData ( 6 ); 46 COUT << ss.theMin () << ENDL; 47 ss.PushData ( 5 ); 48 COUT << ss.theMin () << ENDL; 49 ss.PushData ( 2 ); (50) COUT << ss.theMin () << ENDL; 51 ss.PushData ( 1 ); 52 COUT << ss.theMin () << ENDL; 53 ss.PushData ( 3 ); 54 COUT << ss.theMin () << ENDL; 55 ss.PushData ( 6 ); 56 COUT << ss.theMin () << ENDL; 57 58 ss.PopData (); 59 COUT << ss.theMin () << ENDL; 60 ss.PopData (); 61 COUT << ss.theMin () << ENDL; 62 ss.PopData (); (63) COUT << ss.theMin () << ENDL; 64 ss.PopData (); 65 COUT << ss.theMin () << ENDL; 66 (67) }