LeetCode简单题之最近的请求次数
題目
寫一個 RecentCounter 類來計算特定時間范圍內最近的請求。
請你實現 RecentCounter 類:
RecentCounter() 初始化計數器,請求數為 0 。
int ping(int t) 在時間 t 添加一個新請求,其中 t 表示以毫秒為單位的某個時間,并返回過去 3000 毫秒內發生的所有請求數(包括新請求)。確切地說,返回在 [t-3000, t] 內發生的請求數。
保證 每次對 ping 的調用都使用比之前更大的 t 值。
示例 1:
輸入:
[“RecentCounter”, “ping”, “ping”, “ping”, “ping”]
[[], [1], [100], [3001], [3002]]
輸出:
[null, 1, 2, 3, 3]
解釋:
RecentCounter recentCounter = new RecentCounter();
recentCounter.ping(1); // requests = [1],范圍是 [-2999,1],返回 1
recentCounter.ping(100); // requests = [1, 100],范圍是 [-2900,100],返回 2
recentCounter.ping(3001); // requests = [1, 100, 3001],范圍是 [1,3001],返回 3
recentCounter.ping(3002); // requests = [1, 100, 3001, 3002],范圍是 [2,3002],返回 3
提示:
1 <= t <= 10^9
保證每次對 ping 調用所使用的 t 值都 嚴格遞增
至多調用 ping 方法 10^4 次
來源:力扣(LeetCode)
解題思路
??返回的次數都是每次訪問時間前3000ms內的請求次數,因此我們可以做一個隊列存儲當前請求以及前3000ms內的請求記錄,每次請求返回的時候直接返回隊列的長度即可。
class RecentCounter:def __init__(self):self.temp=[] #請求存儲隊列def ping(self, t: int) -> int:self.temp.append(t)while self.temp[0]+3000<t:del self.temp[0] #不在當前請求前3000ms的請求出隊return len(self.temp)# Your RecentCounter object will be instantiated and called as such:
# obj = RecentCounter()
# param_1 = obj.ping(t)
總結
以上是生活随笔為你收集整理的LeetCode简单题之最近的请求次数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之设计停车系统
- 下一篇: LeetCode简单题之检查整数及其两倍