算法 - 队列类型

队列

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

队列的应用场景

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

JS异步中的任务队列

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

计算最近请求次数

leeCode第933题

  • 越早发出的请求越早不在最近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)
 */
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容