🇨🇳
阿臻的学习笔记
  • 🤖AI
    • 📑README
    • 🕒Scheduling
      • 一种JSSP的DRL环境
    • 📜Paper
      • 神经协同过滤
      • 非侵入信号深度学习
      • 肾透析移植机器学习
      • 心理学随机森林
      • P300数据学习
    • ⚒️Pytorch
      • 1.1数据基础
      • 1.2自动梯度
      • 1.3神经网络
      • 1.4模型实现
      • 2数据操作
    • 🛠️Ray+Gym
    • 📃Graph Neural
      • 图神经网络基础
      • Contrastive Multi-View Representation Learning on Graphs
    • 📽️Deep Learning
      • 《第一章》
      • 《第二章》
      • 《第三章》
      • 《第四章》
      • 台湾陈蕴侬视频2020
    • 🔨MXNet
      • 《第一章》《第二章》
      • 《第三章》
      • 《第四章》
      • 《第五章》
      • 《第六章》
      • 《第七章》
      • 《第八章》
      • 《第九章》
      • 《第十章》
  • 👨‍🏭Study
    • 📔Algorithm
      • Leetcode
        • 第一天(乱刷)
        • 第二天(栈)
        • 第三天(栈)
        • 第四天(堆)(贪心)
        • 第五天(贪心)
        • 第六天(贪心)
        • 第七天(排序)
        • 第八天(排序)
        • 第九天(排序)
        • 第十天(位运算)
        • 第十一天(位运算)
        • 第十二天(位运算)
        • 第十三天(位运算)
        • 第十四天(树)
        • 第十五天(树)
        • 第十六天(树)
        • 第十七天(树)
        • 第十八天(树)
        • 第十九天(树)
        • 第二十天(树)
        • 第二十一天(树)
        • 第二十二天(并查集)
        • 第二十三天(并查集)
        • 第二十四天(DFS)(图)
        • 第二十五天(图)(设计)
        • 第二十六天(拓扑)
        • 第二十七天(字典树)
        • 第二十八天(字典树)
        • 第二十九天(树状数组)(二叉搜索树)
        • 第三十天(递归)
        • 第三十一天(脑筋急转弯)
        • 第三十二天(脑筋急转弯)
        • 第三十三天(记忆化)
        • 第三十四天(队列)
        • 第三十五天(队列)
        • 第三十六天(极小化极大)
        • 第三十七天(几何)
        • 第三十八天(蓄水池抽样)
        • 第三十九天(数组)
        • 第四十天(数组)
        • 第四十一天(数组)
        • 第四十二天(数组)
        • 第四十三天(数组)
        • 第四十四天(数组)
        • 第四十五天(数组)
        • 第四十六天(数组)
      • Sort
        • 最小堆
        • 归并排序(merge_sort)
    • 📓Knowledge
      • python补码
    • 🔧Other
      • pythonic语法
      • Ubuntu备忘
由 GitBook 提供支持
在本页

这有帮助吗?

导出为 PDF
  1. Study
  2. Algorithm
  3. Leetcode

第三天(栈)


创建时间: 2020/7/21 12:09


今天完成题目:496,225,232,1441,1629,1565,155,844,20

496:下一个更大元素

  • 在python3.x中判断字典中有无key要用dict.__contains__(key)

  • 此题记得思路转换为求nums2中的递减栈,当遇到较大值时,则将比它小的pop出来并添加到字典中作为结果

225:用队列实现栈

  • 我采用的是list的方式,但是时间和空间上效果显示不好

  • 还有以下两种方式可以倒入队列或双队列

    • from queue import Queue

    • from collections import deque\

232:用栈实现队列(跟第二天的双栈实现队列一样)

1441:用栈操作数组

  • list.pop(0)可以弹出第一个数\

1629:栈的最小值(O(1)复杂度实现)

  • 建立两个栈,一个是正常模拟栈操作,一个是递减栈,当栈的值小于等于栈顶的时候才能入

  • 之所以是小于等于,是因为有重复的最小元素

  • 递减栈相当于保留正常栈按顺序从大到小的一个列表。没有保存到的值大小在两个递减栈元素之间,被pop也不会对最小值产生影响

1565:包含min的栈(跟1629一致)

155:最小栈(跟1629一致)

  • 官方提供了一种方法,默认递减栈首元素为math.inf即无穷大值

  • 使用self.min_stack.append(min(x, self.min_stack[-1]))来为递减栈push,从而不需要判断,pop时候也能直接pop栈顶

844:比较含退格的字符串

  • 用字符串当栈来比较

  • 用list当栈来比较,pop操作比字符串的截取速度更快\

20:有效的括号

  • 左括号等于进栈,右括号等于出栈

  • 需要考虑细节,例如输入空"",出栈时为空“}”等

  • 所以,仅从正确的输入方式出发,当发现不符合时,直接返回False

�

上一页第二天(栈)下一页第四天(堆)(贪心)

最后更新于3年前

这有帮助吗?

👨‍🏭
📔