程序员面试金典(LeetCode)-面试题03.02(栈的最小值)

    技术2022-07-17  78

    栈的最小值

    题目描述 算法思想 栈的常规操作,这里就不再赘述。这里主要讲解获取最小值的方法。 也就是设立一个辅助栈用以存储最小元素,在元素入栈时,如果辅助栈为空,则压入主栈的元素也压入辅助栈,往后辅助栈中只压入比辅助栈栈顶元素小的元素,这样就达成了目的。

    代码实现

    class MinStack: def __init__(self): self.stack = [] self.minstack = [] def push(self, x: int) -> None: self.stack.append(x) if not self.minstack or x <= self.minstack[-1]: self.minstack.append(x) def pop(self) -> None: x = self.stack.pop() if x == self.minstack[-1]: self.minstack.pop() def top(self) -> int: return self.stack[-1] def getMin(self) -> int: return self.minstack[-1] # Your MinStack object will be instantiated and called as such: # obj = MinStack() # obj.push(x) # obj.pop() # param_3 = obj.top() # param_4 = obj.getMin()
    Processed: 0.009, SQL: 9