获取栈中最小元素
思路:
1. 构造新的栈类,构造器中,包含两个栈,其中一个用来存元素序列,另外一个用来存最小的值
2. 写出最下值得函数
代码
class Stack:
def __init__(self):
self.stack = []
self.top = -1
def push(self, value):
self.stack.append(value)
self.top += 1
def pop(self):
if self.top == -1:
print("The stack is empty")
return
value = self.stack.pop()
self.top -= 1
return value
def peek(self):
if self.top == -1:
return None
return self.stack[self.top]
def is_empty(self):
if self.top == -1:
return True
else:
return False
class MyStack:
def __init__(self):
self.stack = Stack()
self.minStack = Stack()
def push(self, value):
self.stack.push(value)
if self.minStack.is_empty():
self.minStack.push(value)
elif value < self.minStack.peek():
self.minStack.push(value)
def pop(self):
if self.stack.is_empty():
print("The stack is empty")
return None
value = self.stack.pop()
if value == self.minStack.peek():
self.minStack.pop()
return value
def is_empty(self):
if self.stack.is_empty():
return True
else:
return False
def mins(self):
if self.minStack.is_empty():
return None
return self.minStack.peek()
s = MyStack()
s.push(6)
s.push(3)
s.push(5)
s.push(2)
s.push(10)
print(s.mins())
2
本文介绍了一种使用双栈结构实现的算法,能够在O(1)时间内获取栈中的最小元素。通过创建两个栈,一个用于存储元素,另一个用于跟踪最小值,此方法避免了遍历整个栈来查找最小值的效率低下问题。
1634

被折叠的 条评论
为什么被折叠?



