劍指Offer學習-面試題30:包含min函數的棧

	 /**
     * 包含min函數的棧
     */
    class MinStack {
        Stack<Integer> data_stack = null;
        Stack<Integer> min_stack = null;

        public MinStack() {
            data_stack = new Stack<>();
            min_stack = new Stack<>();
        }

        /**
         * 添加一個元素
         * min棧永遠保存最小的元素,當添加的元素比min棧棧頂的元素小時,則入棧,否則在添加一次min棧中棧頂的值
         *
         * @param val
         */
        public void push(int val) {
            int min = val;
            if (!min_stack.isEmpty() && min < val) {
                min = min_stack.peek();
            }
            data_stack.push(val);
            min_stack.push(min);
        }

        /**
         * 直接從min棧中獲取就行
         *
         * @return
         */
        public int getMin() {
            if (!min_stack.isEmpty()) {
                return min_stack.peek();
            }
            return -1;
        }

        /**
         * 彈出一個元素
         *
         * @return
         */
        public int pop() {
            if (!data_stack.isEmpty()) {
                min_stack.pop();
                return data_stack.pop();
            }
            return -1;
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章