class MinStack(object):
def __init__(self):
"""
initialize your data structure here.
"""
self.stack=[]
self.MinStack=[]
def push(self, x):
"""
:type x: int
:rtype: None
"""
self.stack.append(x)
if not self.MinStack or x <= self.MinStack[-1]: #相同值要入栈,不然会导致堆栈溢出
self.MinStack.append(x)
def pop(self):
"""
:rtype: None
"""
i = self.stack.pop(-1)
if self.MinStack[-1] == i:
self.MinStack.pop(-1)
def top(self):
"""
:rtype: int
"""#一定要理解栈的先入后出的思想,所以当进入了一个最小值之后,返回的一直是它,pop出去的都是它上面的值不会pop它,直到pop到它才会是上一个最小值,如此循环就行
return self.stack[-1]
def min(self):
"""
:rtype: int
"""
return self.MinStack[-1]
JZ30 包含min函数的栈
于 2021-06-07 16:49:54 首次发布
本文介绍如何使用Python实现一个名为`classMinStack`的数据结构,它在push操作中保持栈顶元素的同时,也维护一个最小值栈,实现实时获取栈中的最小值。核心代码包括push、pop、top和min方法的实现细节。
摘要由CSDN通过智能技术生成