美文网首页程序员代码面试
【算法题】设计一个有getMin功能的栈

【算法题】设计一个有getMin功能的栈

作者: 埋没随百草 | 来源:发表于2018-12-02 21:46 被阅读0次

    实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。

    解题思路

    使用两个栈来实现,其中一个栈用来保存栈中的元素,另一个栈用来保存每一步操作对应的最小值。

    实现代码

    import java.util.Stack;
    
    public class MyStack {
        private Stack<Integer> stackData;
        private Stack<Integer> stackMin;
    
        public MyStack() {
            this.stackData = new Stack<>();
            this.stackMin = new Stack<>();
        }
    
        public void push(int num) {
            stackData.push(num);
            if (stackMin.empty()) {
                stackMin.push(num);
            } else if (num < getMin()) {
                stackMin.push(num);
            } else {
                int min = stackMin.peek();
                stackMin.push(min);
            }
        }
    
        public int pop() {
            if (stackData.empty()) {
                throw new RuntimeException("Stack is empty");
            }
            this.stackMin.pop();
            return this.stackData.pop();
        }
    
        public int getMin() {
            if (stackData.empty()) {
                throw new RuntimeException("Stack is empty");
            }
            return this.stackMin.peek();
        }
    }
    

    相关文章

      网友评论

        本文标题:【算法题】设计一个有getMin功能的栈

        本文链接:https://www.haomeiwen.com/subject/jzmscqtx.html