Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 최근 호출 수

<시간/>

최근 요청을 계산하기 위해 RecentCounter라는 클래스를 작성한다고 가정합니다. 이 클래스에는 ping(t) 메서드가 하나만 있습니다. 여기서 t는 밀리초 단위의 시간을 나타냅니다. 이것은 3000밀리초 전부터 지금까지 이루어진 핑 수를 반환합니다. 현재 핑을 포함하여 시간이 [t - 3000, t]인 모든 핑이 계산됩니다. 그리고 모든 콜 토핑이 이전보다 엄격하게 더 큰 t 값을 사용한다는 것이 보장됩니다.

따라서 입력이 Call ping 4번 ping(1), ping(100), ping(3001), ping(3002)과 같으면 출력은 각각 1,2,3,3이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 하나의 대기열을 만들어 클래스를 초기화합니다. 처음에는 비어 있습니다.
  • ping() 함수를 정의합니다. 시간이 걸립니다
  • 큐의 크기가 0이 아니고 t - queue[0]> 3000인 동안 do
    • 대기열에서 첫 번째 요소 삭제
  • 대기열 끝에 t 삽입
  • 큐의 반환 크기

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class RecentCounter:
   def __init__(self):
      self.queue = []
   def ping(self, t):
      while len(self.queue) and t - self.queue[0] > 3000:
         self.queue.pop(0)
         self.queue.append(t)
      return len(self.queue)
ob = RecentCounter()
print(ob.ping(1))
print(ob.ping(100))
print(ob.ping(3001))
print(ob.ping(3002))

입력

ob.ping(1) ob.ping(100) ob.ping(3001) ob.ping(3002)

출력

1
2
3
3