栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

栈和队列总结

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

栈和队列总结

基础知识
  1. 栈里面的元素在内存中是连续分布的么?
    答:不连续,python中collections.deque双向队列,用双向链表实现,而链表在内存中非连续分布。
    deque的pop和apend时间复杂度O(1),而list的pop和insert时间复杂度O(n)
    deque支持从两端添加和删除元素,所以既可以用作队列,也可以用作栈。
  • 用栈实现队列
    输入栈,输出栈,用List表示
    pop时,输出栈有值,直接弹出;输出栈为空,把输入栈所有值加入输出栈,再从输出栈弹出

  • 用队列实现栈
    双队列deque实现,
    一个队列为主,另一个队列为辅
    pop时,把主队列的除队尾的元素都加入辅助队列;把主队列和辅助队列交换,此时辅助队列中只有最后一个进入的元素,弹出辅助队列元素

栈经典题目 括号匹配

括号匹配
用栈,匹配左括号时,右括号先入栈,只需要比较当前元素与栈顶是否相等, 当遍历完字符串且stack为空,括号完全匹配。
括号不匹配的3中情况:

  • 左括号多余
  • 无多余,但括号类型不匹配
  • 右括号多余
字符串去重

字符串去重

逆波兰表达式

逆波兰表达式

队列经典题目 滑动窗口最大值

滑动窗口最大值
用deque双头队列实现单调队列,即递增或递减的队列,pop和push不同场景不同写法

求前K个高频元素

求前K个高频元素
python中借用库函数heapq,实现小顶堆,用小顶堆来实现优先级队列
求前k大,用小顶堆
求前K小,用大顶堆

  1. 先用dict实现数字与频次的映射
  2. 用小顶堆对频次排序
  3. 倒序输出小顶堆
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/990762.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号