최소 스택을 달성

세 개의 작은 요소법 (getMin)를 가지고, 스택, 스택 (POP) 누름 (누름)을 갖는 스택을 구현하는 방법. 세 가지 방법의 시간 복잡도는 O (1)되도록.

 

예를 들면 :

  * 스택의 하단 -> 스택
  *의 4,9,7,3,8,5

 

아이디어 :

  단순히 최소값을 기록하여 스택으로서 때 스택의 작은 소자. 스택 동작 후에이 수행 될 수 있기 때문에 작은 요소가 발견되지 않도록, 최소값, 팝된다.

  오른쪽 아이디어 : 

    1. 스택 시간의 각 주요 요소를 밀어 스택의 백업을 생성하고 스택 백업의 모든 최상위 요소 비교
    2. 메인 푸시 스택 요소는 메인 스택 밀면서, 요소는 스택 푸쉬 백업하는 백업 스택의 최상위 요소보다 작다;
    3. 주요 스택 팝 요소 및 스택 맨 위에있는 요소를 백업 할 필요가, 그리고 동일한 경우, 상단 요소는 스택을 팝업 수있는 백업해야합니다.

 

코드 구현 :

. (1)  오기 ; 인 java.util.ArrayList의
 2  오기 를 java.util.List]
 . (3)  수입 java.util.Stack의]
 . (4)  / ** 
. 5  * 스택을 구현하기위한, 스택 (POP) 누름 (누름)를 갖는 스택, 이 방법은 세 개의 작은 소자 (getMin)에 걸린다.
6  . (1) * 세 가지 방법의 시간 복잡도가 O이되도록
 . 7  *
 . 8  * 스택의 하단 -> 스택
 . 9  * 4,9,7,3,8,5
 10   * / 

. 11 공개 클래스 MinStack { 12은 전용 스택 <정수> = mainStack 새로운 새로운 스택 <> (); (13)는 전용 스택 <정수> = minStack 새로운 새로운 스택 <> () 14 15 공공 공극 푸시 ( INT의 요소) { 16 mainStack.push (요소); 17 일 경우 (minStack.empty () || 요소 <= minStack.peek ()) { 18 minStack.push (요소); 19 } 20 } 21 22 공중 정수 팝업 () { 23 일 경우 (mainStack.peek (같음) (minStack.peek ()).) { 24 minStack.pop (); 25 } 26 리턴 mainStack.pop (); 27 } 28 29 공개정수 getMinElement () { 30 의 경우 (! minStack.isEmpty ()) { 31 반환 minStack.peek (); 32 } 다른 { 33 반환 ; 34 } 35 } 36 37 공중 에서 <정수> getStackElement () { 38 에서 <정수> 요소리스트 = 새로운 ArrayList를 <> (); (39) 에 대한이 ( int로 I = 0; i가 mainStack.size () ";을 난 ++ ) { 40 elementList.add (mainStack.get (I)); 41 } 42 요소리스트; 43 } 44 45 46 공중 정적 무효 메인 (문자열 []에 args) { 47 MinStack 스택 = 새로운 MinStack (); 48 stack.push (4 ); 49 stack.push (9 ); 50 stack.push (7 ); 51 stack.push (3 ); 52 stack.push (8 ); 53 stack.push (5 ); 54 에서 System.out.println (stack.getStackElement의 toString () ().); (55) 에서 System.out.println는 ( "최소 요소는"+ stack.getMinElement ()); (56) 에서 System.out.println ( "팝업 시작 ..." ); 57 stack.pop (); 58 stack.pop (); 59 stack.pop (); 60 에서 System.out.println ( "팝업 끝 ..." ); 61 에서 System.out.println (stack.getStackElement의 toString () ().); 62 에서 System.out.println ( "최소 요소는"+ stack.getMinElement ()); 63 } 64 }

 결과 :

[4, 9, 7, 3, 8, 5 ] 
최소 원소 : 3 
팝 ... 시작 
팝업 단부 ... 
[ 4, 9, 7 ] 
최소 요소는 : (4)

 

추천

출처www.cnblogs.com/zldmy/p/11486681.html