주제 :
스택 데이터 구조 정의 스택 실현 형태는 스택 기능 분 최소 수를 찾기 위해, 통화 분, 푸시 팝 시간 복잡도는 O (1)
아이디어 :
가장 작은 요소들 각각은 (가장 작은 요소의 두 요소 전에 스택으로 푸시 새로운 작은 값) 스택을 이용한 다른으로 저장된다.
가장 작은 요소가 보조 스택에 누를 때마다, 스택은 보조 스택을 저장할 수 있습니다 경우가 항상 최소의 요소는 데이터 스택에서 팝 가장 작은 요소되어, 및 보조 스택의 최상위 요소를 팝업, 이번에 지원 스택의 새로운 최상위 요소는 다음 최소
코드 구현 :
수입 java.util.Stack의; 공용 클래스 18 { 전용 스택 <정수> = 스택 새로운 스택 <> (); 전용 스택 <정수> = minStack 새로운 스택 <> (); 공개 공극 푸시 ( INT의 데이터) { stack.push (데이터); 경우 (minStack.size () == 0 || 데이터 < minStack.peek ()) { minStack.push (데이터); } 다른 { minStack.push (minStack.peek ()); } } 공공 INT의 팝업 ()을 던졌습니다예외 { 경우 (stack.size () == 0) { ( "栈已为空") 새로운 예외를 던져; } INT의 데이터 = stack.pop (); minStack.pop (); 반환 데이터; } 공개 INT 분 () 가 발생 예외 { {경우 (stack.size () == 0) ( "栈已为空") 새로운 예외를 발생; } 리턴 )를 minStack.peek (; } }