《剑指offer》26、包含min功能的栈

it2025-09-12  5

包含min功能的栈:要求设计一个栈,除了正常进出栈以外,还有一个输出最小值的功能。 首先自然而然可以想到python自带的min函数…… 其实沿着min函数的思路走,如果我们想要搜索一个list的最小值,我们可以从左往右遍历,然后先找到前两个元素的较小者,再将其与第三个元素比较,得出更小者,再向后比较,以此类推。那么对本题也是类似,我们可以使用上述的判断方法,同时设置一个辅助栈,用于存放当前栈的最小值。设置辅助栈是因为,若最小值出栈了,最小值需要进行更新,因此需要辅助栈来保存次小值。基于这个思路,我们可以很快写出代码。

# offer26-solution class Solution: def __init__(self): self.stack = [] self.minstack = [] def push(self, node): self.stack.append(node) # 正常入栈 if self.minstack == [] or node < self.min(): # 辅助栈的push self.minstack.append(node) else: self.minstack.append(self.min()) def pop(self): if self.stack == [] or self.minstack == []: # 出栈和普通判断 return None self.stack.pop() self.minstack.pop() def top(self): # 出栈 return self.stack[-1] def min(self): # 出辅助栈 return self.minstack[-1]

比起前面的链表题,和后面的二叉树,这几道题算蛮简单的……

最新回复(0)