• 【LeetCode】155. Min Stack


    题目:

    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.

    Example:

    MinStack minStack = new MinStack();
    minStack.push(-2);
    minStack.push(0);
    minStack.push(-3);
    minStack.getMin();   --> Returns -3.
    minStack.pop();
    minStack.top();      --> Returns 0.
    minStack.getMin();   --> Returns -2.

    题解:

    使用两个栈,一个数据栈,一个用来存储每一步的最小值

    Solution 1 

    class MinStack {
    public:
        MinStack() {
            
        }
        
        void push(int x) {
            s1.push(x);
            if(s2.empty() || s2.top() >= x)
                s2.push(x);
        }
        
        void pop() {
            if(s1.top() == s2.top()){
                s2.pop();
            }
            s1.pop();
        }
        
        int top() {
            return s1.top();
        }
        
        int getMin() {
            return s2.top();
        }
        stack<int> s1, s2;
    };

    只用一个栈,不过需要额外的整形变量记录最小值。

    Solution 2 

    class MinStack {
    public:
        /** initialize your data structure here. */
        MinStack() {
            
        }
        
        void push(int x) {
            if(x <= min_val){
                s.push(min_val);
                min_val = x;
            }
            s.push(x);
        }
        
        void pop() {
            if(s.top() == min_val){
                s.pop();
                min_val = s.top();
            }
            s.pop();
        }
        
        int top() {
            return s.top();
        }
        
        int getMin() {
            return min_val;
        }
        int min_val = INT_MAX;
        stack<int> s;
    };
  • 相关阅读:
    C# 进程间通信之二传递复杂数据类型(转)
    c# 进程间的通信实现之一简单字符串收发
    WinRAR压缩操作帮助类
    软件推荐:扫码格式检测系统
    C#位操作(转)
    浅析c#内存泄漏
    常用SQL语句
    linux下网站搭建
    VS中的活动debug和活动cpu
    让程序员跳槽的非钱原因
  • 原文地址:https://www.cnblogs.com/Atanisi/p/7506733.html
Copyright © 2020-2023  润新知