您当前的位置: 首页 >  leetcode

暂无认证

  • 3浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

leetcode933:最近的请求次数

发布时间:2020-07-18 00:24:44 ,浏览量:3

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)
 */ 

题目的理解: 在这里插入图片描述 难以理解的地方哈: 返回从 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; 

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

关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.8800s