题目链接:https://leetcode.com/problems/min-stack/submissions/
代码
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.stack_list=[]
self.stack_min=[]
def push(self, x: int) -> None:
self.stack_list.append(x)
if not self.stack_min or self.stack_min[-1] >= x:
self.stack_min.append(x)
#print(self.stack_min)
def pop(self) -> None:
if not self.stack_list:return None
if self.stack_min and self.stack_list.pop()==self.stack_min[-1]:
self.stack_min.pop()
def top(self) -> int:
if not self.stack_list:return None
return self.stack_list[-1]
def getMin(self) -> int:
if not self.stack_min:return None
return self.stack_min[-1]
# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()
解题思路
用两个栈来实现
关键点在于push函数,如果push的值比最小栈的栈顶值还小或者相等,那么需要push