zoukankan      html  css  js  c++  java
  • [简单-933.最近的请求次数]

    [简单-933.最近的请求次数]

    写一个 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]
    

    题目分析:第一次读到这个题根本不知道说的是什么意思,看了别人的分析才知道:

    题目是说计算3000毫秒前到现在的调用次数, 对于输入1来说, [-2999, 1] 注意两边是闭区间 只有1这个时刻调用了一次,所以输出1;输入100以后呢,区间变成[-2900, 100], 这时候,1是包含在内的(-2900...1...100),因为在这个区间里,调用了两次, 输出2;输入3001呢,区间变成[1, 3001], 这时候包含在区间里的有几个呢? (1...100...3001),输出3;输入3002呢,区间变成[2, 3002], 这时候包含在区间里的只有(100...3001...3002),因此还是3。

    方法1:使用队列对每次ping进行存储,因为每次的结果依赖上次的结果。
    class RecentCounter {
    public:
        queue<int>qe;
    public:
        RecentCounter() {
        }
        
        int ping(int t) {
            qe.push(t);
            while(!qe.empty()) {
                if (qe.front() < t- 3000) {
                    qe.pop();
                } else {
                    break;
                }
            }
            return qe.size();
        }
    };
    
    /**
     * Your RecentCounter object will be instantiated and called as such:
     * RecentCounter* obj = new RecentCounter();
     * int param_1 = obj->ping(t);
     */
    
  • 相关阅读:
    核函数
    主成分分析(PCA)原理详解
    Caffe上用SSD训练和测试自己的数据
    FCN-全卷积网络
    rpc选择标准
    dataserver test code
    数字方舟
    分布式事务
    golang获取数据表转换为json通用方法
    qt for java
  • 原文地址:https://www.cnblogs.com/wangdongfang/p/13701054.html
Copyright © 2011-2022 走看看