思路
队列来实现,每次ping的时候弹出所有队头的、小于t-3000的元素,最后返回队的长度即可
import java.util.LinkedList;
import java.util.Queue;
public class RecentCounter {
Queue<Integer> requests;
public RecentCounter() {
requests = new LinkedList<>();
}
public int ping(int t) {
requests.add(t);
while(requests.peek() < t - 3000){
requests.poll();
}
return requests.size();
}
}
Go代码
type RecentCounter struct {
q []int
}
func Constructor() RecentCounter {
return RecentCounter{q: []int{}}
}
func (this *RecentCounter) Ping(t int) int {
var i int
for ; i < len(this.q) && this.q[i] < t-3000; i++ {
}
this.q = this.q[i:]
this.q = append(this.q, t)
return len(this.q)
}