(18) 제목 <증명 안전을 제공>

주제 :

스택 데이터 구조 정의 스택 실현 형태는 스택 기능 분 최소 수를 찾기 위해, 통화 분, 푸시 팝 시간 복잡도는 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 (; 
    } 
}

 

추천

출처www.cnblogs.com/HarSong13/p/11330712.html