Leetcode Java Number of Recent Calls

업데이트:

문제

Link

코드

class RecentCounter {

  private Deque<Integer> time;

  public RecentCounter() {
    this.time = new LinkedList<>();
  }

  public int ping(int t) {
    this.time.addLast(t);
    while (this.time.getFirst() < t - 3000) {
      this.time.removeFirst();
    }
    return this.time.size();
  }

}

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

결과

Link

설명

  1. 일정 시간 범위 내 최근 요청 수를 계산하는 RecentCounter 클래스를 완성하는 문제이다.
    • 생성자인 RecentCounter()는 최근 요청이 0인 카운터를 초기화한다.
    • 메서드인 ping(int t)은 시간 t를 새 요청으로 추가하고, 최근 3000 밀리초 내인 [$t - 3000$, t] 사이의 요청 횟수를 반환한다. 단, 모든 ping의 호출에 이전 호출보다 더 큰 t 값을 사용한다.
  2. 최근 요청 수를 계산하기 위한 전역 변수를 정의한다.
    • time은 최근 요청 시간을 저장할 변수이다.
  3. 생성자인 RecentCounter()를 정의한다.
    • time을 LinkedList로 초기화한다.
  4. 메서드인 ping(int t)을 정의한다.
    • time의 마지막에 t를 넣어준다.
    • time의 앞의 값들 중 $t - 3000$보다 작은 값들은 모두 제거한다.
    • 최근 3000 밀리초 내 요청 수가 저장된 time의 크기를 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기