Leetcode.155

155.最小栈

  • 设定一个辅助栈,用来存放stack中最小值:
    • push:每当push新值进来时,如果“小于等于”min_stack栈顶值,则一起push到min_stack,即更新了最小值;
    • pop:判断pop出去的元素值是否是min_stack栈顶元素值(即最小值),如果是则将min_stack栈顶元素一起pop,这样可以保证min_stack栈顶元素始终是stack中的最小
    • getMin:返回min_stack栈顶即可。
  • min_stack的作用是对stack中的元素做标记,标记的原则是min_stack中元素一定是降序的(栈底最大栈顶最小)。换个角度理解,min_stack等价于遍历stack所有元素,把升序的数字都删除掉,留下一个从栈底到栈顶降序的栈。本题要求获取最小值的复杂度是O(1),因此须构建辅助栈,在push与pop的过程中始终保持辅助栈为一个降序栈。
  • 时间空间复杂度都为O(N),获取最小值复杂度为O(1)。
class MinStack:
    def __init__(self):
        """
        initialize your data structure here.
        """
        self.stack = []
        self.min_stack = []
def push(self, x: int) -> None:
    self.stack.append(x)
    if not self.min_stack or x <= self.min_stack[-1]: 
        self.min_stack.append(x)
def pop(self) -> None:
    if self.stack.pop() == self.min_stack[-1]:
        self.min_stack.pop()

def top(self) -> int:
    return self.stack[-1]

def getMin(self) -> int:
    return self.min_stack[-1]

   转载规则


《Leetcode.155》 Severus 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
深度学习的Attenton机制 深度学习的Attenton机制
简介​ 通常在计算机视觉的深度学习算法中,Attention机制基本思想是让系统学会注意力,可以自动关注那些我们希望它关注的重点信息。 Attention​ 通常Attention机制被分为soft attenti
2019-08-15 Severus
下一篇 
爱如半夜汽笛 爱如半夜汽笛
《爱如半夜汽笛》—- 村上春树女孩问男孩:“你喜欢我喜欢到什么程度?” 少年想了想,用沉静的声音说:“半夜汽笛那个程度。” 少女默默地等待下文—里面肯定有什么故事。 “一次,半夜突然醒来。”他开始讲述,“确切时间不清楚,大约两三点吧,也
2019-08-12 Severus
  目录