155. 最小栈 (辅助栈)

 

难度简单

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop() 删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。

 

 

class MinStack:

    def __init__(self):
        self.stack = []
        self.stack_min = []

    def push(self, val: int) -> None:
        self.stack.append(val)
        if len(self.stack_min) > 0:
            if val < self.stack_min[-1]:
                self.stack_min.append(val)
            else:
                self.stack_min.append(self.stack_min[-1])
        else:
            self.stack_min.append(val)

    def pop(self) -> None:
        self.stack.pop()
        self.stack_min.pop()

    def top(self) -> int:
        return self.stack[-1]

    def getMin(self) -> int:
        return self.stack_min[-1]



# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(val)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()

 

 

class MinStack {

public:
    stack<int> stk;
    stack<int> stk_min;
    stk_min.push(INT_MAX);
    MinStack() {
    }
    
    void push(int val) {
        stk.push(val);
        if (val < stk_min.top()) {
            stk_min.push(val);
        } else {
            stk_min.push(stk_min.top());
        }
    }
    
    void pop() {
        stk.pop();
        stk_min.pop();
    }
    
    int top() {
        return stk.top();
    }
    
    int getMin() {
        return stk_min.top();
    }
};

/**
 * 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 @ 2022-04-13 22:09  乐乐章  阅读(31)  评论(0编辑  收藏  举报