• Leetcode练习(Python):栈类:第155题:最小栈:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。


    题目:

    最小栈:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。  push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。  

    思路:

    利用辅助栈来实现,辅助栈用来存放最小值。

    切记,在实现pop()时,要将辅助栈的栈顶也弹出。

    程序:

    class MinStack:
    
        def __init__(self):
            """
            initialize your data structure here.
            """
            self.stack = []
            self.auxiliary_stack = [math.inf]
    
        def push(self, x: int) -> None:
            self.stack.append(x)
            self.auxiliary_stack.append(min(x, self.auxiliary_stack[-1]))
    
        def pop(self) -> None:
            self.stack.pop()
            self.auxiliary_stack.pop()
    
        def top(self) -> int:
            return self.stack[-1]
    
        def getMin(self) -> int:
            return self.auxiliary_stack[-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()
    

      

  • 相关阅读:
    Codeforces Round #717 (Div. 2)
    Codeforces Round #716 (Div. 2)
    atCoder Regular Contest 117
    Codeforces Round #715 (Div. 2)
    牛客挑战赛49
    从零开始搭建webpack应用
    扫盲:npm
    MYSQL安装
    Int和integer区别
    关于JDK配置以及DOS窗口执行指令
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12891835.html
Copyright © 2020-2023  润新知