2022刷题-目标400+|19. 设计一个有getMin功能的栈 (栈)

实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。【要求】1、 pop、push、getMin操作的时间复杂度都是O(1)。 2.、设计的栈类型可以使用现成的栈结构



# 设计一个有getMin功能的栈-方法1 class NewStack1: def __init__(self): self.stackData = https://www.it610.com/article/[] self.stackMin = []def push(self, newNum): self.stackData.append(newNum) if len(self.stackMin) == 0 or newNum <= self.getMin(): self.stackMin.append(newNum)def pop(self): if len(self.stackData) == 0: raise Exception("stack is empty") value = https://www.it610.com/article/self.stackData.pop() if self.getMin() == value: self.stackMin.pop()return valuedef getMin(self): if len(self.stackMin) == 0: raise Exception("stack is empty")return self.stackMin[-1]

2022刷题-目标400+|19. 设计一个有getMin功能的栈 (栈)
文章图片


# 设计一个有getMin功能的栈-方法2 class NewStack2: def __init__(self): self.stackData = https://www.it610.com/article/[] self.stackMin = []def push(self, newNum): self.stackData.append(newNum) if len(self.stackMin) == 0 or newNum <= self.getMin(): self.stackMin.append(newNum) else: self.stackMin.append(self.getMin())def pop(self): if len(self.stackData) == 0: raise Exception("stack is empty") self.stackMin.pop() return self.stackData.pop()def getMin(self): if len(self.stackMin) == 0: raise Exception("stack is empty")return self.stackMin[-1]

【2022刷题-目标400+|19. 设计一个有getMin功能的栈 (栈)】

    推荐阅读