leetcode第933题最近的请求次数C++

题目描述:在这里插入图片描述

在这里插入图片描述

解题思路:在时间点 t 进行一次 ping 操作,加上之前在 [t-3000, t] 范围内的 ping 操作的次数,并将次数返回。例如,例子中第一次 ping 的 t = 1, 返回 1;第二次 ping 的 t = 100, 第一次 ping 的时间点 1 在本次允许范围 [100-3000, 100] 之内,所以返回2;第三次 ping 时,前两次的 ping 都在允许范围[3000-3000, 3000] 之内,所以返回 3;第四次 ping 时,第一次 ping 的 t = 1 不在允许范围[3002-3000, 3000] 之内,所以返回 3。利用队列先进先出的特点,移除当次 ping 操作不在允许范围内的时间点,剩下的队列内保存的都是允许范围内的时间点,最后返回队列的长度,即为当前时间点 t 所有允许范围内的 ping 操作次数。
代码:
class RecentCounter {
public:
    queue<int>q;
    RecentCounter() {

    }
    
    int ping(int t) {
        q.push(t);
        while(q.front()<t-3000)
        q.pop();

        return q.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、付费专栏及课程。

余额充值