• 933、最近的请求次数 | JS-队列


    写一个 RecentCounter 类来计算特定时间范围内最近的请求。

    请你实现 RecentCounter 类:

    RecentCounter() 初始化计数器,请求数为 0 。
    int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。
    保证 每次对 ping 的调用都使用比之前更大的 t 值。

     

    示例:

    输入:
    ["RecentCounter", "ping", "ping", "ping", "ping"]
    [[], [1], [100], [3001], [3002]]
    输出:
    [null, 1, 2, 3, 3]

    解释:
    RecentCounter recentCounter = new RecentCounter();
    recentCounter.ping(1); // requests = [1],范围是 [-2999,1],返回 1
    recentCounter.ping(100); // requests = [1, 100],范围是 [-2900,100],返回 2
    recentCounter.ping(3001); // requests = [1, 100, 3001],范围是 [1,3001],返回 3
    recentCounter.ping(3002); // requests = [1, 100, 3001, 3002],范围是 [2,3002],返回 3
     

    提示:

    1 <= t <= 109
    保证每次对 ping 调用所使用的 t 值都 严格递增
    至多调用 ping 方法 104 次

    思路:越早发出的请求越早不在最近的3000ms内的请求里,是先进先出,所以用队列

     1 var RecentCounter = function() {
     2     this.q = [];
     3 };
     4 
     5 /** 
     6  * @param {number} t
     7  * @return {number}
     8  */
     9 RecentCounter.prototype.ping = function(t) {
    10     this.q.push(t);
    11     while (this.q[0] < t-3000) {
    12         this.q.shift();
    13     }
    14     return this.q.length;
    15 };
    16 
    17 /**
    18  * Your RecentCounter object will be instantiated and called as such:
    19  * var obj = new RecentCounter()
    20  * var param_1 = obj.ping(t)
    21  */
  • 相关阅读:
    97. Interleaving String
    96. Unique Binary Search Trees
    95. Unique Binary Search Trees II
    94. Binary Tree Inorder Traversal
    odoo many2many字段 指定打开的form视图
    docker sentry 配置文件位置
    postgres 计算时差
    postgres 字符操作补位,字符切割
    postgres判断字符串是否为时间,数字
    odoo fields_view_get
  • 原文地址:https://www.cnblogs.com/oaoa/p/14823539.html
Copyright © 2020-2023  润新知