写一个 RecentCounter 类来计算最近的请求。
它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。
返回从 3000 毫秒前到现在的 ping 数。
任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping。
保证每次对 ping 的调用都使用比之前更大的 t 值。
方法一:队列
var RecentCounter = function() {
this.q=[];
};
RecentCounter.prototype.ping = function(t) {
this.q.push(t);
while(this.q[0]<t-3000){
this.q.shift();
}
return this.q.length;
};
方法二:数组
var RecentCounter = function() {
this.q=[];
};
RecentCounter.prototype.ping = function(t) {
this.q.push(t);
for(var i=0;i<this.q.length;i++){
if(this.q[i]<(this.q[this.q.length-1]-3000)){
this.q.splice(i,1)
i--;
}else{
break;
}
}
return this.q.length;
};