数据结构之“队列”

  • 队列是什么?
  • 队列的应用场景
    • 场景一:食堂排队打饭
    • 场景二:JS异步中的任务队列
    • 场景三:计算最近请求次数
    • LeetCode:933.最近的请求次数
    • 前端与队列:JS异步中的任务队列
  • 技术要点
  • 思考题

队列是什么?

一个先进先出的数据结构
JavaScript中没有队列,但可以用Array实现队列的所有功能

const queue = [];
queue.push(1);
queue.push(2);
const item1 = queue.shift();
const item2 = queue.shift();

队列的应用场景

需要先进先出的场景
比如:食堂排队打饭、JS异步中的任务队列、计算最近请求次数

场景一:食堂排队打饭

食堂只留一个窗口,学生排队打饭似春运
先进先出,保证有序

场景二:JS异步中的任务队列

JS是单线程,无法同时处理异步中的并发任务
使用任务队列先后处理异步任务

场景三:计算最近请求次数

有新请求就入队,3000ms前发出的请求出队
队列的长度就是最近请求次数
输入:inputs = [[],[1],[100],[3001],[3002]],输出:[null,1,2,3,3],分别在1,100,3001,3002时刻发出请求,这四个时刻的最近请求次数分别为1,2,3,3

LeetCode:933.最近的请求次数

解题思路
越早发出的请求越早不在最近3000ms内的请求里
满足先进先出,考虑用队列
解题步骤
有新请求就入队,3000ms前发出的请求出队
队列的长度就是最近请求次数

时间复杂度和空间复杂度都为O(n),时间复杂度n是需要被踢出队的请求次数,空间复杂度,对应长度,最近请求次数

前端与队列:JS异步中的任务队列

setTimeout(()=>console.log(1),0);
console.log(2)

技术要点

队列是一个先进先出的数据结构
JavaScript中没有队列,但可以用Array实现队列的所有功能
队列常用操作:push、shift、queue[0]

思考题

1、请用 ES6 的 class,封装一个 Queue 类,包括 push、shift、peek 方法。
2、请用队列这个数据结构结合 React 或 Vue写一个任务 App,包括添加任务和完成任务功能,要求任务只能先进先出

(四)数据结构之“队列”相关推荐

  1. 数据结构之队列、双端队列

    数据结构之队列.双端队列 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 队列是一种先进先出的(First in First Out)的线性表,简称FIFO.允许插入的 ...

  2. c++ 优先队列_C/C++数据结构:队列结构最全解析!带你零基础入门队列结构

    前言 上一章节针对于C语言栈结构做了解析,不清楚的可以回顾一下. 本章节主要针对于C语言的基础数据结构队列做以解析. 数据结构之队列 队列是一种特殊的 线性表 ,特殊之处在于它只允许在表的前端(fro ...

  3. java 头尾 队列_Java数据结构之队列(动力节点Java学院整理)

    队列的定义: 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表. (1)允许删除的一端称为队头(Front). (2)允许插入的一端称为队尾(Rear). (3)当队列中 ...

  4. 数据结构之队列的应用(实现斐波那契数列)

    数据结构之队列的应用(实现斐波那契数列) 导入 基本的队列结构 的构造函数 const Queue = require('./Queue.js')/*** @description 获取第n项斐波那契 ...

  5. python环形队列_Python 实现数据结构-循环队列的操作方法

    今天我们来到了循环队列这一节,之前的文章中,我介绍过了用python自带的列表来实现队列,这是最简单的实现方法. 但是,我们都知道,在列表中删除第一个元素和删除最后一个元素花费的时间代价是不一样的,删 ...

  6. 银行业务队列简单模拟Java程序设计_PTA 数据结构 银行业务队列简单模拟

    仅供参考,请勿粘贴 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完 ...

  7. 大一新生必看,自学必看,里昂详解数据结构之队列

    数据结构之队列 有幸掌握浅薄知识,不吝分享,保持独立思考,自主学习,共同进步.另求关注,点赞,评论,感谢!(tips:主页有数据结构全部知识点,以及知识点讲解,建立完善的数据结构知识体) 核心算法思想 ...

  8. 数据结构——环形队列的原理(模拟环形队列)

    数据结构--环形队列的原理(模拟环形队列) 知识点简要介绍: 队列:一种特殊的线性表,包含队列头.队列尾,只允许在队列头进行删除操作,在队列为进行删除操作 分类:     顺序队列.循环队列(环形队列 ...

  9. 数据结构之队列queue

    C++数据结构之队列queue 什么是队列 队列的基本特征 队列是如何工作的 队列的实现 队列的应用 什么是队列 与栈相反,队列是一种先进先出(FIFO)的线性表,只允许在表的一端插入,在另一端删除. ...

最新文章

  1. 昨天晚上,亲眼目睹了我一哥们的崩溃,被空降90后上司鄙视,说他这种人在公司......
  2. 100%的BAT招聘岗位都考的知识,你精通了吗?
  3. TurboMail荣获2010年度优秀电子邮件产品殊荣
  4. Android View Binding的使用
  5. 基础拾遗------泛型详解
  6. 位置指纹法的实现(KNN)
  7. 也说春运网络购票:12306的码农没有你想的那么弱 [转]
  8. 超声声场模拟_3D打印全息透镜聚焦超声在低成本脑成像中的应用
  9. linux 磁盘分区,格式化,挂载
  10. 与机器人对话的语音识别解决方案
  11. 各种数据结构优缺点分析
  12. UR+RealSense手眼标定(eye-to-hand)
  13. 高分二号影像数据预处理及裁剪过程
  14. ICQ官方中文版 v10.0.12161.0
  15. 解决xlrd不能打开xlsx表格以及打开失败问题
  16. 这才叫装机必备,这3款高质量电脑软件,内存满了也绝不卸载
  17. Android系统介绍与框架
  18. CS231n的第三次作业之循环神经网络
  19. 世界第一辐轮王土拨鼠6453万美国德国碳纤维自行车品牌排行榜
  20. 美通社日历 | 媒体关注、会展信息、企业财报发布,节假日备忘(7月27日—8月1日)...

热门文章

  1. 《剑指offer》从上往下打印二叉树
  2. 数据结构(六)---队列的链式存储的实现---java版
  3. hibernate防止sql语句注入
  4. hdfs统计某个目录下的文件数
  5. ElasticSearch5.3的 head插件启动与关闭
  6. 详解log4j2(下) - 按日志级别区分文件输出
  7. elasticsearch5.3安装插件head
  8. Oracle jdk 历史版本官方下载地址及下载方法
  9. node中的js-核心模块
  10. easyui datebox时间控件如何只显示年月