xinyu04

导航

LeetCode 155 Min Stack

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

Implement the MinStack class:

  • MinStack() initializes the stack object.
  • void push(int val) pushes the element val onto the stack.
  • void pop() removes the element on the top of the stack.
  • int top() gets the top element of the stack.
  • int getMin() retrieves the minimum element in the stack.

You must implement a solution with \(O(1)\) time complexity for each function.

Solution

用一个普通的 \(stack\) 来模拟,然后用一个数组 \(Min\) 来维护最小值。

点击查看代码
class MinStack {
private:
    stack<int> sk1;
    int Min[30003];
    int pt = 0;
    
public:
    MinStack() {
        
    }
    
    void push(int val) {
        sk1.push(val);
        if(pt==0)Min[pt] = val, pt++;
        else Min[pt] = min(val, Min[pt-1]),pt++;
    }
    
    void pop() {
        sk1.pop();pt--;
    }
    
    int top() {
        return sk1.top();
    }
    
    int getMin() {
        return Min[pt-1];
    }
};

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack* obj = new MinStack();
 * obj->push(val);
 * obj->pop();
 * int param_3 = obj->top();
 * int param_4 = obj->getMin();
 */

posted on 2022-07-22 02:51  Blackzxy  阅读(3)  评论(0编辑  收藏  举报