- Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path933.RecentCounter.go
35 lines (28 loc) · 930 Bytes
/
933.RecentCounter.go
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
package myqueue
import (
"Leetcode/algorithms/kit"
)
// 题目:最近的请求次数 https://leetcode-cn.com/problems/number-of-recent-calls/
// 题解:此题主要的理解题目吧,理解了就很简单
// 只会考虑最近3000毫秒到现在的 ping 数,因此可以使用队列存储这些 ping 的记录。
// 当收到一个时间 t 的 ping 时,我们将它加入队列,并且将所有在时间 t - 3000 之前的 ping 移出队列,
// 同时返回队列的长度即可
// RecentCounter structure declare
typeRecentCounterstruct {
queue*kit.Queue
}
// NewRecentCounter
funcNewRecentCounter() *RecentCounter {
return&RecentCounter{
queue: kit.NewQueue(),
}
}
// Ping returns ping times within the last 3000
func (rc*RecentCounter) Ping(tint) int {
rc.queue.Push(t)
// 把3000毫秒以外ping的 t 移除队列
forrc.queue.Peek() <t-3000 {
rc.queue.Pop()
}
returnrc.queue.Len()
}