前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode933:最近的请求次数

leetcode933:最近的请求次数

作者头像
贵哥的编程之路
发布2020-10-28 15:33:59
5590
发布2020-10-28 15:33:59
举报
文章被收录于专栏:用户7873631的专栏
代码语言:javascript
复制
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毫秒的这个范围内的请求。如果包括了之前的几个请求就有几个请求啊。

代码语言:javascript
复制
 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啊.

代码语言:javascript
复制
return this.q.length;

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档