933. Number of Recent Calls

Difficulty:
Related Topics:
Similar Questions:

    Problem

    You have a RecentCounter class which counts the number of recent requests within a certain time frame.

    Implement the RecentCounter class:

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

      Example 1:

    Input
    ["RecentCounter", "ping", "ping", "ping", "ping"]
    [[], [1], [100], [3001], [3002]]
    Output
    [null, 1, 2, 3, 3]
    
    Explanation
    RecentCounter recentCounter = new RecentCounter();
    recentCounter.ping(1);     // requests = [1], range is [-2999,1], return 1
    recentCounter.ping(100);   // requests = [1, 100], range is [-2900,100], return 2
    recentCounter.ping(3001);  // requests = [1, 100, 3001], range is [1,3001], return 3
    recentCounter.ping(3002);  // requests = [1, 100, 3001, 3002], range is [2,3002], return 3
    

      Constraints:

    Solution (Java)

    class RecentCounter {
        private Queue<Integer> q;
    
        public RecentCounter() {
            q = new LinkedList<>();
        }
    
        public int ping(int t) {
            q.offer(t);
            int min = t - 3000;
            while (min > q.peek()) {
                q.poll();
            }
            return q.size();
        }
    }
    
    /**
     * Your RecentCounter object will be instantiated and called as such:
     * RecentCounter obj = new RecentCounter();
     * int param_1 = obj.ping(t);
     */
    

    Explain:

    nope.

    Complexity: