문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
특정 시간 범위 내의 최근 요청 수를 계산하는 RecentCounter 클래스가 있다.
RecentCounter 클래스를 구현해라.
ping을 호출할 때마다 이전 호출보다 엄격하게 더 큰 t값을 사용한다는 것이 보장된다.
#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
class RecentCounter {
private static final int[] records = new int[10000];
private int start;
private int end;
public RecentCounter() {
start = 0;
end = 0;
}
public int ping(int t) {
while(start < end && (t - records[start] > 3000)){
start++;
}
records[end++] = t;
return end - start;
}
}
/**
* Your RecentCounter object will be instantiated and called as such:
* RecentCounter obj = new RecentCounter();
* int param_1 = obj.ping(t);
*/