-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path933.number-of-recent-calls.py
83 lines (77 loc) · 2.32 KB
/
933.number-of-recent-calls.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#
# @lc app=leetcode id=933 lang=python3
#
# [933] Number of Recent Calls
#
# https://leetcode.com/problems/number-of-recent-calls/description/
#
# algorithms
# Easy (76.96%)
# Likes: 655
# Dislikes: 1015
# Total Accepted: 364.5K
# Total Submissions: 473.2K
# Testcase Example: '["RecentCounter","ping","ping","ping","ping"]\n[[],[1],[100],[3001],[3002]]'
#
# 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
#
#
#
# Constraints:
#
#
# 1 <= t <= 10^9
# Each test case will call ping with strictly increasing values of t.
# At most 10^4 calls will be made to ping.
#
#
#
# @lc code=start
from collections import deque
class RecentCounter:
def __init__(self):
self.requests = deque() # 요청을 저장할 큐
def ping(self, t: int) -> int:
self.requests.append(t) # 새로운 요청 추가
# 3000ms(3초)보다 오래된 요청을 제거
while self.requests and self.requests[0] < t - 3000:
self.requests.popleft()
return len(self.requests) # 현재 남아 있는 요청 수 반환
# Your RecentCounter object will be instantiated and called as such:
# obj = RecentCounter()
# param_1 = obj.ping(t)
# @lc code=end