zoukankan      html  css  js  c++  java
  • [LeetCode]96. Min Stack带Min函数的栈

    Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

    • push(x) -- Push element x onto stack.
    • pop() -- Removes the element on top of the stack.
    • top() -- Get the top element.
    • getMin() -- Retrieve the minimum element in the stack.

    Subscribe to see which companies asked this question

    解法:还是用两个栈s1和s2来模拟。s1按顺序保存数据,而s2保存当前最小值。在进栈时,如果s2为空或者当前进栈值不大于s2栈顶值,则也进s2;出栈时,如果当前出栈值恰好为s2的栈顶值,则s2也要出栈。

    class MinStack {
    public:
        void push(int x) {
            s1.push(x);
            if (s2.empty() || x <= s2.top()) s2.push(x);
        }
        void pop() {
            if (!s1.empty()) {
                if (!s2.empty() && s1.top() == s2.top()) s2.pop();
                s1.pop();
            }
        }
        int top() {
            if (!s1.empty()) return s1.top();
            return 0;
        }
        int getMin() {
            if (!s2.empty()) return s2.top();
            return 0;
        }
    private:
        std::stack<int> s1, s2;
    };
  • 相关阅读:
    CRLF注入
    Windows下消息中间件RabbitMQ安装教程(超详细)
    (超详细)SpringBoot+RabbitMQ+Stomp+JS实现前端消息推送
    数数塔 NBUT 1083
    数数塔 NBUT 1083
    数塔 HDU 2084
    数塔 HDU 2084
    数塔 HDU 2084
    递推
    递推
  • 原文地址:https://www.cnblogs.com/aprilcheny/p/4977622.html
Copyright © 2011-2022 走看看