以查找最小值为例
class MyStack:
def __init__(self):
self.values = []
self.mins = []
def push(self, ins):
if not self.mins:
self.mins.append((0, ins))
elif ins < self.mins[-1][1]:
self.mins.append(
(len(self.values), ins)
)
self.values.append(ins)
def pop(self):
if self.mins and len(self.values)-1 == self.mins[-1][0]:
self.mins.pop()
return self.values.pop() if self.values else None
# def top(self):
# return self.values[-1] if self.values else None
def get_min(self):
return self.mins[-1][1] if self.mins else None

本文介绍了一种使用两个栈的数据结构,其中一个用于存储元素,另一个用于跟踪最小值。通过这种方式,可以在O(1)时间内获取当前栈中的最小值,而无需遍历整个栈。这种数据结构特别适用于需要频繁查询最小值的场景,如实时数据分析和算法优化。
1649

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



