zoukankan      html  css  js  c++  java
  • 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()
    

      

  • 相关阅读:
    Canvas技术
    线段树树状数组小结
    html5 Canvas元素
    ccpc网络邀请赛部分
    2020杭电多校
    JavaFx 绘制图形和文本(笔记)
    P4094 [HEOI2016/TJOI2016]字符串(二分+多种数据结构)
    L3-021 神坛 (30分) (计算几何最小三角形面积)
    10月28日G、H、I题
    出栈序列的合法性 (25分) 之树状数组玄学做法
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12891835.html
Copyright © 2011-2022 走看看