상세 컨텐츠

본문 제목

933. Number of Recent Calls

LeetCode

by 10002s 2023. 11. 17. 00:15

본문

Number of Recent Calls - LeetCode

일정 시간 동안 최근 요청의 수를 계산하는 RecentCounter 클래스가 있습니다.
RecentCounter 클래스를 구현하세요:
-  RecentCounter() : 최근 요청을 0으로 초기화합니다.
- int ping(int t) : 시간 t에서의 새로운 요청을 추가하고, t는 밀리초 단위의 어떤 시간을 나타냅니다. 과거 3000 밀리초 동안 발생한 요청의 수를 반환합니다 (새로운 요청 포함). 구체적으로, [t - 3000, t]의 범위 내에서 발생한 요청의 수를 반환합니다.
이전 호출보다 항상 더 큰 t 값을 사용하는 것이 보장됩니다.

 

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

Implement the RecentCounter class:

  • RecentCounter() Initializes the counter with zero recent requests.
  • int ping(int t) Adds a new request at time t, where t represents some time in milliseconds, and returns the number of requests that has happened in the past 3000 milliseconds (including the new request). Specifically, return the number of requests that have happened in the inclusive range [t - 3000, t].

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

 

풀이과정 설명:

요청을 저장하는 큐를 사용합니다.
ping 메서드가 호출될 때마다 큐에 현재 시간을 추가합니다.
큐에서 3000 밀리초 이전의 요청을 제거합니다.
큐의 길이를 반환합니다.

 

class RecentCounter {
    Queue<Integer> queue;
    
    public RecentCounter() {
        queue = new LinkedList<>();
    }
    
    public int ping(int t) {
        queue.offer(t);
        while(!queue.isEmpty() && queue.peek() < t - 3000){
            queue.poll();
        }
        return queue.size();
    }
}

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

 

반응형

'LeetCode' 카테고리의 다른 글

206. Reverse Linked List  (0) 2023.11.18
649. Dota2 Senate  (0) 2023.11.18
735. Asteroid Collision  (0) 2023.11.16
2390. Removing Stars From a String  (0) 2023.11.16
1657. Determine if Two Strings Are Close  (0) 2023.11.13

관련글 더보기