基于python的数据结构最小栈
时间: 2023-11-12 14:21:38 浏览: 105
最小栈是一种特殊的栈数据结构,它可以支持常规栈的所有操作,同时还可以在O(1)时间内获取栈中的最小元素。在Python中,可以通过使用列表来实现最小栈,同时维护一个辅助栈用来存储当前栈中的最小元素。
具体实现可以参考以下代码:
class MinStack:
def __init__(self):
self.stack = [] # 普通栈
self.min_stack = [] # 辅助栈
def push(self, val: int) -> None:
self.stack.append(val)
if not self.min_stack or val <= self.min_stack[-1]:
self.min_stack.append(val)
def pop(self) -> None:
if self.stack.pop() == self.min_stack[-1]:
self.min_stack.pop()
def top(self) -> int:
return self.stack[-1]
def getMin(self) -> int:
return self.min_stack[-1]
需要注意的是,在push元素时,需要同时将元素压入普通栈和辅助栈中,同时需要比较当前元素与辅助栈顶元素的大小,如果当前元素小于等于辅助栈顶元素,则将当前元素也压入辅助栈;在pop元素时,需要比较出栈元素与辅助栈顶元素是否相等,相等则同时将辅助栈顶元素也弹出。
阅读全文