zoukankan      html  css  js  c++  java
  • leecode第一百五十五题(最小栈)

    class MinStack {
    public:
        stack<int> cur_stack;
        stack<int> cur_min;//用来存储最小值的栈
        int min_num;
        
        MinStack() {//初始化
            this->min_num = INT_MAX;
        }
    
        void push(int x) {//压入栈,同时记录最小值
            if (x < this->min_num)
                this->min_num = x;
    
            cur_min.push(this->min_num);
            cur_stack.push(x);
        }
    
        void pop() {//弹出栈,删除的同时注意小心最小值的变化
            cur_min.pop();
            if (cur_min.empty())
                this->min_num = INT_MAX;
            else
                this->min_num = cur_min.top();
                
            cur_stack.pop();
        }
    
        int top() {//查看栈顶
            return cur_stack.top();
        }
    
        int getMin() {//当前最小值,等同于查看存储最小值的栈顶
            return cur_min.top();
        }
    };

     分析:

    嘿嘿,偷懒了,直接用了别人的栈,但是作用不一样啊,我这个能查看最小值。不然那就用两个队列实现栈了。

    编程太渣了,第一时间没想起来,最小值随着栈的弹出也会变化。第二时间没想起来弹出之后最小值的阈值也会变。

  • 相关阅读:
    Java追加文件内容的三种方法
    3种方法关闭Java线程
    linux系统登陆过程
    swift正点
    swift简介(东拼西凑,看看就的了)
    变量设置和查看
    进程调度优先级
    获取进程对应的UID登陆用户
    进程会计
    system调用
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/10717843.html
Copyright © 2011-2022 走看看