LeetCode 933. Number of Recent Calls求最近通话次数

本文介绍了一个名为RecentCounter的类的实现,该类用于计算在过去3000毫秒内的ping请求次数。通过维护一个队列,每当进行ping操作时,会移除所有超出时间范围的旧请求,从而确保队列大小即为有效请求的数量。

一、题目
Write a class RecentCounter to count recent requests.

It has only one method: ping(int t), where t represents some time in milliseconds.

Return the number of pings that have been made from 3000 milliseconds ago until now.

Any ping with time in [t - 3000, t] will count, including the current ping.(所有在t-3000到t范围内的数字都会被计数,包括边界)

It is guaranteed that every call to ping uses a strictly larger value of t than before.

在这里插入图片描述

写一个 RecentCounter 类来计算最近的请求。

它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。

返回从 3000 毫秒前到现在的 ping 数。

任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping。

保证每次对 ping 的调用都使用比之前更大的 t 值。

示例:

输入:
inputs = [“RecentCounter”,“ping”,“ping”,“ping”,“ping”], inputs = [[],[1],[100],[3001],[3002]]
输出:[null,1,2,3,3]

提示:

每个测试用例最多调用 10000 次 ping。
每个测试用例会使用严格递增的 t 值来调用 ping。
每次调用 ping 都有 1 <= t <= 10^9。

二、代码实现

class RecentCounter {

    LinkedList<Integer> queue;
    public RecentCounter() {
        queue = new LinkedList();
    }
    /*
    维护一个队列,当进行ping操作时,将队列中所有小于t-3000的值都出队,
    这样队列中元素的个数即为[t - 3000, t] 时间范围之内ping的次数
    */
    public int ping(int t) {
        queue.addLast(t);
        while(queue.getFirst() < t - 3000){
            queue.removeFirst();
        }
        
        return queue.size();
    }
}

/**
 * Your RecentCounter object will be instantiated and called as such:
 * RecentCounter obj = new RecentCounter();
 * int param_1 = obj.ping(t);
 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值