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(); */