写一个 RecentCounter 类来计算特定时间范围内最近的请求。表示的是返回过去 3000 毫秒内发生的所有请求数(包括新请求),也就是返回的是 [t-3000, t] 之间的请求个数。
解题思路
- 数组queue用来存储每次请求的时间 t 。
- 当新进来的 t ,需要遍历一下数组内部的元素是否满足 [t-3000, t] 之间的范围内。
代码
var RecentCounter = function() {
this.queue = [];
};
RecentCounter.prototype.ping = function(t) {
// 主要是保存 [t-3000, t] 之间的请求ip
this.queue.push(t);
while(t - this.queue[0] > 3000) {
this.queue.shift()
}
return this.queue.length;
};