首页 > 其他 > 详细

【程序员面试金典】面试题 03.02. 栈的最小值

时间:2020-06-17 19:38:01      阅读:52      评论:0      收藏:0      [点我收藏+]

思路

借助辅助栈保存当前栈最小值。

  • 入栈:如果入栈元素小于最小栈的栈顶元素,则同时加入最小栈;否则,将最小栈栈顶元素再次加入最下栈
  • 出栈:同时弹出两个栈中元素

代码

时间复杂度:O(1)
空间复杂度:O(1)

class MinStack {
    stack<int> st1;
    stack<int> st2;
public:
    /** initialize your data structure here. */
    MinStack() {

    }
    
    void push(int x) {
        st1.push(x);
        if (!st2.empty()) {
            if (x < st2.top()) st2.push(x);
            else st2.push(st2.top());
        } else {
            st2.push(x);
        }
    }
    
    void pop() {
        if (!st1.empty()) {
            st1.pop();
            st2.pop();
        }        
    }
    
    int top() {
        if (!st1.empty()) return st1.top();
        return -1;
    }
    
    int getMin() {
        if (!st2.empty()) return st2.top();
        return -1;
    }
};

【程序员面试金典】面试题 03.02. 栈的最小值

原文:https://www.cnblogs.com/galaxy-hao/p/13154075.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!