세 개의 작은 요소법 (getMin)를 가지고, 스택, 스택 (POP) 누름 (누름)을 갖는 스택을 구현하는 방법. 세 가지 방법의 시간 복잡도는 O (1)되도록.
예를 들면 :
* 스택의 하단 -> 스택
*의 4,9,7,3,8,5
아이디어 :
단순히 최소값을 기록하여 스택으로서 때 스택의 작은 소자. 스택 동작 후에이 수행 될 수 있기 때문에 작은 요소가 발견되지 않도록, 최소값, 팝된다.
오른쪽 아이디어 :
-
- 스택 시간의 각 주요 요소를 밀어 스택의 백업을 생성하고 스택 백업의 모든 최상위 요소 비교
- 메인 푸시 스택 요소는 메인 스택 밀면서, 요소는 스택 푸쉬 백업하는 백업 스택의 최상위 요소보다 작다;
- 주요 스택 팝 요소 및 스택 맨 위에있는 요소를 백업 할 필요가, 그리고 동일한 경우, 상단 요소는 스택을 팝업 수있는 백업해야합니다.
코드 구현 :
. (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)