算法
1.队列的实现
- 队列是一种遵从先进先出原则的有序集合
- 添加新元素的一端称为队尾,另一端称为队首
- JavaScript中没有队列,但可以用 Array 实现队列的所有功能
基于数组:
1 | class Queue { |
基于对象:
1 | class Queue { |
2.什么场景用队列
需要先进先出的场景
- 食堂排队打饭、JS异步中的任务队列、计算最近请求次数
场景一:食堂排队打饭
- 食堂只留一个窗口,学生排队打饭似春运
- 先进先出,保证有序
场景二:JS异步中的任务队列
- JS是单线程,无法同时处理异步中的并发任务
- 使用任务队列先后处理异步任务
场景三:计算最近请求次数
- 有新请求就入队,3000ms前发出的请求出队
- 队列的长度就是最近请求次数
3.最近的请求次数
解题思路:
- 越早发出的请求越早不在最近3000ms内的请求里
- 满足先进先出,考虑用队列
解题步骤:
- 有新请求就入队,3000ms前发出的请求出队
- 队列的长度就是最近请求次数
1 | var RecentCounter = function() { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GhostYi的博客!