1、Description
push(x) -- 将元素 x 推入栈中。
pop() -- 删除栈顶的元素。
top() -- 获取栈顶元素。
getMin() -- 检索栈中的最小元素。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/min-stack
2、Example
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/min-stack
3、Code
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.items = []
self.mins = []
def push(self, x: int) -> None:
if len(self.items) == 0:
self.items.append(x)
self.mins.append(x)
else:
if self.getMin() > x:
self.items.append(x)
self.mins.append(x)
else:
self.items.append(x)
self.mins.append(self.mins[-1])
def pop(self) -> None:
self.items.pop()
self.mins.pop()
def top(self) -> int:
return self.items[-1]
def getMin(self) -> int:
return self.mins[-1]
4、Test
obj = MinStack()
obj.push(-2)
obj.push(0)
obj.push(-3)
print(obj.getMin())
obj.pop()
print(obj.top())
print(obj.getMin())
result: