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

包含min函数的栈

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

队列和栈 第二题 注意考虑什么时候要更新最小值 简单

class Solution {
public:
    void push(int value) {
        // 压入的时候 发现小于原先最小的 就更新最小的值
        // 就是直接push
        if(value<minnum)
            minnum=value;
        a.push(value);
    }
    void pop() {
        // 先把要扔掉的扔掉
        // 判断要pop出去的是不是最小值
        int temp=a.top();
        a.pop();
        // pop出去的不是最小值 不用处理
        if(temp != minnum){
            return;
        }
        
        // pop出去的是最小值 此时 要去重新更新最小值
        // 因为栈的特性 如果想要遍历一遍 每个点都会被扔掉
        // 所以 在这里 需要另一个栈来临时保存结果
        // 遍历 找最小值 再把栈还原
        stack<int> b;
        temp=20000;
        while(!a.empty())
        {
            temp=a.top() < temp? a.top():temp;
            b.push(a.top());
            a.pop();
        }
        minnum = temp;
        while(!b.empty())
        {
            a.push(b.top());
            b.pop();
        }
    }
    int top() {
        // 只是输出栈顶的值 不会影响栈 无所谓
        return a.top();
    }
    int min() {
        // 只是输出最小的值 不会影响栈 无所谓
        return minnum;
    }
    stack<int> a;
    int minnum=20000;
};
题解 文章被收录于专栏

一遍做剑指offer 一边保存做题步骤 并附带详细注释哦

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 20:15
还能挽救吗?找同学帮忙看了一下&nbsp;字节怎么能如此对我
牛客26396789...:你这是严重红线,被发现你自己永远进不去,你那个同学直接走人,你还敢宣扬
点赞 评论 收藏
分享
点赞 评论 收藏
分享
水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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