var RecentCounter = function() {
    this.q=[];
};

/** 
 * @param {number} t
 * @return {number}
 */.
RecentCounter.prototype.ping = function(t) {
    this.q.push(t);
    while(this.q[0]<t-3000)
    {
        this.q.shift();
    }
    return this.q.length;
};

/**
 * Your RecentCounter object will be instantiated and called as such:
 * var obj = new RecentCounter()
 * var param_1 = obj.ping(t)
 */

题目的理解:
leetcode933:最近的请求次数_HTML/CSS
难以理解的地方哈:
返回从 3000 毫秒前到现在的 ping 数。
意思:现在的请求的毫秒数到之前的3000毫秒之间的数,算是一个范围把。
任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping。
意思:现在请求的毫秒数到之前的3000毫秒之间的范围。
保证每次对 ping 的调用都使用比之前更大的 t 值。
意思:是逐渐增大。
问题:
核心思想:
它求的是一个范围,一个现在的请求毫秒数到之前3000毫秒的这个范围内的请求。如果包括了之前的几个请求就有几个请求啊。

 while(this.q[0]<t-3000)
    {
        this.q.shift();
    }

t-3000代表现在请求的到之前3000毫秒到请求,这个范围内。
第一个请求1毫秒那一个,大于范围的开始几次的请求的(1-3000=-2999,100-3000=2900,3001-3000=1,3002-3000=2)的话,范围的结束是(1,100,3001,3002)就累加,为什么累加。因为他是范围内的啊
如果第一个毫秒1哪一个,如果小于范围的开始的话,几次的请求的,还有什么好说的啊,踢出去。
为什么是q[0],因为肉眼看出来踢出去的只有1啊.

return this.q.length;

累加。
为什么用队列?
因为是先进先出的啊懂?