资讯专栏INFORMATION COLUMN

933-最近的请求次数

zhkai / 488人阅读

摘要:前言的第一题最近的请求次数写一个类来计算最近的请求。返回从毫秒前到现在的数。示例输入输出提示每个测试用例最多调用次。实现代码最近的请求次数存储时间的最小有效时间的索引从开始遍历判断最小的有效时间是否无效返回有效的元素个数

前言

Weekly Contest 109的第一题 最近的请求次数:

写一个 RecentCounter 类来计算最近的请求。

它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。

返回从 3000 毫秒前到现在的 ping 数。

任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping

保证每次对 ping 的调用都使用比之前更大的 t 值。

示例:

输入:inputs = ["RecentCounter","ping","ping","ping","ping"], inputs = [[],[1],[100],[3001],[3002]]
输出:[null,1,2,3,3]

提示:

每个测试用例最多调用 10000ping

每个测试用例会使用严格递增的 t 值来调用 ping

每次调用 ping 都有 1 <= t <= 10^9

解题思路

本题其实并不复杂,但是我在实现时由于思考的方向错了,导致了花费大量时间去完成这个题目。
一开始我的思路是仿照LRU算法,实现一个会移除超出有效范围[t - 3000, t]的缓存。
但是随着不断的尝试后,发现其实只需要统计时有效的ping即可。期间遇到过好几次执行超时的情况,所以需要优化统计有效ping时的检索区间。
所以最终实现思路如下:

需要一个存储所有ping时间的数组list和记录最小有效ping时间的list索引minIndex

每次ping就从minIndex开始检索list,直到遇到数组list中的ping时间item有效(即item[t - 3000, t])则中断循环,否则(item)minIndex自增。

实现代码
/**
 * 933. 最近的请求次数
 * @author RJH
 * create at 2018/11/4
 */
public class RecentCounter {
    /**
     * 存储ping时间的List
     */
    private List list;
    /**
     * 最小有效ping时间的索引
     */
    private int minIndex=0;

    public RecentCounter() {
        list=new LinkedList<>();
    }

    public int ping(int t) {
        list.add(t);
        for(int i=minIndex;i           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71997.html

相关文章

  • Leetcode PHP题解--D50 933. Number of Recent Calls

    摘要:题目链接题目分析这个题目说实在的,看得我一脸蒙蔽。返回自毫秒到现在为止的次数包括当前。调函数时,传入的参数为当前的毫秒数。思路其实是说,返回前毫秒内的次数。最终代码若觉得本文章对你有用,欢迎用爱发电资助。 D50 933. Number of Recent Calls 题目链接 933. Number of Recent Calls 题目分析 这个题目说实在的,看得我一脸蒙蔽。 返回自...

    gekylin 评论0 收藏0
  • 力扣(LeetCode)933

    摘要:题目地址题目描述写一个类来计算最近的请求。它只有一个方法,其中代表以毫秒为单位的某个时间。返回从毫秒前到现在的数。任何处于时间范围之内的都将会被计算在内,包括当前指时刻的。并且删除要用迭代器来删除,否则会引发。 题目地址:https://leetcode-cn.com/probl...题目描述:写一个 RecentCounter 类来计算最近的请求。 它只有一个方法:ping(int ...

    Jeffrrey 评论0 收藏0
  • JavaScript队列数据结构详解

      今天我们讲讲JavaScript队列数据结构详解。 什么是队列?  队列是一种先进先出的数据结构,队列有两种操作:插入和删除;入队和出队。简单来说就是允许插入的一端称为队尾、允许删除的一端称为队头;  如下图展示了栈这个数据结构:  JavaScript中的队列  要知道JavaScript中没有有关队列的数据模型,因此我们需要通过数组进行模拟,当数组中提供的push()和shift()选...

    3403771864 评论0 收藏0
  • Nginx 中 map 模块使用及性能测试

    摘要:每个请求来的时候都会先去看看中有没有,即使使用的是的方式也不免会让我对它的性能产生一些担忧,所以性能测试就必须要来一发了。注也在阿里云执行只要是为了在一个数据中心降低网络延迟。测试因为考虑到服务器比较稳定,减少压测总数。 背景 最近我操刀了leetcode的论坛迁移,整个过程持续了几周的时间,总算暂时告了一个段落。常使用leetcode论坛的用户应该已经发现论坛已经大变样了吧~ 期间遇...

    zhonghanwen 评论0 收藏0
  • Nginx 中 map 模块使用及性能测试

    摘要:每个请求来的时候都会先去看看中有没有,即使使用的是的方式也不免会让我对它的性能产生一些担忧,所以性能测试就必须要来一发了。注也在阿里云执行只要是为了在一个数据中心降低网络延迟。测试因为考虑到服务器比较稳定,减少压测总数。 背景 最近我操刀了leetcode的论坛迁移,整个过程持续了几周的时间,总算暂时告了一个段落。常使用leetcode论坛的用户应该已经发现论坛已经大变样了吧~ 期间遇...

    newsning 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<