【刷leetcode,拿Offer-022】933. Number of Recent Calls

39 篇文章 0 订阅
39 篇文章 0 订阅

题目链接:933. Number of Recent Calls

题面:

933. Number of Recent Calls

Easy

133647FavoriteShare

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.

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

 

Example 1:

Input: inputs = ["RecentCounter","ping","ping","ping","ping"], inputs = [[],[1],[100],[3001],[3002]]
Output: [null,1,2,3,3]

 

Note:

  1. Each test case will have at most 10000 calls to ping.
  2. Each test case will call ping with strictly increasing values of t.
  3. Each call to ping will have 1 <= t <= 10^9.

题意:计算给定的当前的时间往前3000个单位内的通话数。

解题:注意一下值是严格递增的,可以保留一下当前下标做个优化,找到第一个,然后减一下得出大小。(可以用二分优化,此处没有什么必要)。

代码:

class RecentCounter {
public:
    vector <int> v;
    int cur;
    RecentCounter() {
        cur=0;
    }
    int ping(int t) {
        int ans=0;
        v.push_back(t);
        for(int i=cur;i<=v.size();i++){
            if(v[i]>=t-3000){
                cur=i;
                ans=v.size()-cur;
                break;
            }
        }
        return ans;
    }
};

/**
 * Your RecentCounter object will be instantiated and called as such:
 * RecentCounter* obj = new RecentCounter();
 * int param_1 = obj->ping(t);
 */

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值