要求
写一个 RecentCounter 类来计算特定时间范围内最近的请求。
请你实现 RecentCounter 类:
RecentCounter() 初始化计数器,请求数为 0 。 int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。 保证 每次对 ping 的调用都使用比之前更大的 t 值。
思路
let一个数组,存储请求,然后根据t-3000到t的这个时间段,shift掉小于t-3000的请求即可
代码
var RecentCounter = function () {
// 创建要给数组,用来存储请求
this.pingArray = []
};
/**
* @param {number} t
* @return {number}
*/
RecentCounter.prototype.ping = function (t) {
// 把请求存入数组中
this.pingArray.push(t);
// 因为时间是越来越大的,所以不存在顺序的问题
while (this.pingArray[0] < (t - 3000)) {
// 把小于t-3000的请求shift掉
this.pingArray.shift();
}
// 得到的长度,就是[t-3000,t]时间段内的请求次数
return this.pingArray.length;
};