队列
- 一个先进先出的数据结构
- javascript中没有队列,但可以用Array实现队列的所有功能
队列的应用场景
- 需要先进先出的场景
- 比如:食堂排队打饭、JS异步中的任务队列、计算最近请求次数
JS异步中的任务队列

- JS是单线程,无法同事处理异步中的并发任务
- 使用任务队列先后处理异步任务
计算最近请求次数
- 越早发出的请求越早不在最近3000ms内的请求里
- 满足先进先出,考虑用队列
这题看到答案那么多人连题目都看不懂我就放心了。
条件就是第一个输入如果为ping,则将第二个输入当前时间毫秒数放进队列中。队列中小于当毫秒数的就出队列,当然题目假设全都是结果为ping(什么拍平啊,concat的全都不用),所以要做的就是将当前t - 3000毫秒外的踢出去,返回当前队列中的长度就行了,题目不难
const RecentCounter = function() {
this.q = []
};
/**
* @param {number} t
* @return {number}
*/
RecentCounter.prototype.ping = function(t) {
this.q.push(t)
while (this.q[0] < t -3000) {
this.q.shift()
}
return this.q.length
};
/**
* Your RecentCounter object will be instantiated and called as such:
* var obj = new RecentCounter()
* var param_1 = obj.ping(t)
*/
网友评论