プッシュ、ポーリングを必要とし、時間複雑さのgetMin法はO(N)であり、特別なスタックを実装

達成するための2つのスタックを持ちます

パブリック クラスGetMinStack { 

    プライベートスタック<整数> stackData。
    プライベートスタック<整数> stackMin。

    パブリックGetMinStack(){
         この .stackData = 新しいスタック<整数> ();
        この .stackMin = 新しいスタック<整数> (); 
    } 

    公共 ボイドプッシュ(INT OBJ){
         場合(stackMin.isEmpty()){ 
            stackMin.push(OBJ)。
        } { 
            stackMin.push(OBJ <getmin()? OBJ:getmin());
        } 
        stackData.push(OBJ)。
    } 

    公共の int型getmin(){
         場合(stackMin.isEmpty()){
             スロー 新しい(のRuntimeExceptionを" あなたのスタックが空です。" ); 
        } 
        を返す)(stackMin.peekします。
    } 

    公共の int型のポップ(){
         場合この.stackData.isEmpty()){
             スロー 新しい(のRuntimeExceptionを" あなたのスタックが空です。" ); 
        } 
        この.stackMin.pop()。
        リターン これを .stackData.pop(); 
    } 

}

 

おすすめ

転載: www.cnblogs.com/moris5013/p/11627223.html