12.スタック操作帯の最小

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/xwdrhgr/article/details/102778316

12.スタック操作帯の最小

スタックを実装するには、次の操作をサポートします。

  • プッシュ(valが)スタックヴァルにプッシュします

  • ポップ()先頭の要素をポップし、ポップアップ要素に戻ります

  • 分()は、スタックの要素の最小値を返します

それはO(1)オーバーヘッドを必要とします。

サンプル

サンプル2:

入力:

プッシュ(1)

(I)

プッシュ(2)

(I)

プッシュ(3)

(I)

出力:

1

1

1

注意事項

分)なしデジタルスタック(ことを確実にするために呼び出されていません

public class MinStack {
        Stack<Integer> stack;
        int min=Integer.MAX_VALUE;
        public MinStack() {
            // do intialization if necessary
            stack=new Stack<>();
        }


        /*
         * @param number: An integer
         * @return: nothing
         */
        public void push(int number) {
            // write your code here
            if (min>number)min=number;
            stack.push(number);
        }


        /*
         * @return: An integer
         */
        public int pop() {
            // write your code here
            int ret = stack.pop();
            if (ret == min ) {
                min = Integer.MAX_VALUE;
                if ( !stack.empty()) {
                for (int i = 0; i < stack.size(); i++) {
                    if (min > stack.get(i)) {
                        min = stack.get(i);
                    }
                }
                }
            }
            return ret;
        }


        /*
         * @return: An integer
         */
        public int min() {
            // write your code here
            if (stack.empty())return -1;
            return  min;
        }
    }

 

おすすめ

転載: blog.csdn.net/xwdrhgr/article/details/102778316