题解 | #包含min函数的栈#

包含min函数的栈

http://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49

class Solution {
public:
    void push(int value) {
        stk1.push(value);
        // 小于等于stk2栈顶,同时将value压入 stk1和 stk2, 空的时候也压入 stk2
        if(stk2.empty()){
            stk2.push(value);
        }else if(value<=stk2.top()) {
            stk2.push(value);
        } 
    }
    void pop() {
        if(stk1.empty())
            return ;
        // 从 stk1中弹出一个元素
        int top = stk1.top();
        stk1.pop();
        // 如果 stk2的栈顶元素也等于 stk1的栈顶元素,则stk2也弹出栈顶元素
        if(!stk2.empty() && top == stk2.top())
            stk2.pop();
    }
    int top() {
        if(stk1.empty())
            return -1;
        return stk1.top();
    }
    int min() {
        if(stk2.empty())
            return -1;
        // 栈内的最小值即 stk2的栈顶,注意不要弹出去!!
        int temp =stk2.top();
        return temp;
    }
private:
    stack<int> stk1;
    stack<int> stk2;
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
09-23 18:40
点赞 评论 收藏
分享
09-22 09:42
门头沟学院 Java
牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
如果可以选,你最想去哪家...
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务