zoukankan      html  css  js  c++  java
  • LeetCode 155 _ 最小栈

    1. 题目描述

    2. 代码

     1 class MinStack:
     2     def __init__(self):
     3         self.stack = []
     4         self.min_stack = []
     5 
     6     def push(self, x: int) -> None:
     7         self.stack.append(x)
     8         if len(self.min_stack) == 0 or x <= self.min_stack[-1]:
     9             self.min_stack.append(x)
    10 
    11     def pop(self) -> None:
    12         x = self.stack.pop()
    13         if x == self.min_stack[-1]:
    14             self.min_stack.pop()
    15         
    17         # if self.stack[-1] == self.min_stack[-1]:
    18         #     del self.min_stack[-1]
    19         # return self.stack.pop()
    20 
    21     def top(self) -> int:
    22         return self.stack[-1]
    23 
    24     def getMin(self) -> int:
    25         return self.min_stack[-1]

    思路: 这道题目就是设计一种能够在O(1)复杂度获取最小值的栈.

             因为普通的栈, 查询最小值, 需要遍历整个栈, 时间复杂度是O(n).

             本题“空间换时间”的思想, 增加了一个最小栈, 占用了空间, 但节省了时间.

             最小值存在最小栈里, 查询最小值的时间复杂度是O(1), 常数级的复杂度.

    3. 整理

    pop()函数用于移除列表中的一个元素(默认最后一个元素), 并且返回该元素的值.

    最后附上b站该题的一个讲解:

    https://www.bilibili.com/video/BV1YK4y1r77W?from=search&seid=10963963257770652967

  • 相关阅读:
    char *p = "abcdefg"; p[0] = p[1]出错
    最近在 OS-10.9下配置opencv, cgal, latex, qt, pillow
    Python文件操作
    Python字典和集合
    Python目录操作
    python处理中文(待补充)
    混合高斯模型
    随机生成某些稀疏矩阵
    matlab注释
    C#中int,string,char[],char的转换(待续)
  • 原文地址:https://www.cnblogs.com/vvzhang/p/13778208.html
Copyright © 2011-2022 走看看