최소 데이터 스택을 찾는

설명 제목 :
  최소 운영 요소를 달성하기 위해 스택에 기본 기능을 달성하기 위해, 다음 리턴 스택을 특별한 스택을 구현합니다.
  [조건]
  (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) }

 

추천

출처www.cnblogs.com/zzw1024/p/10988060.html