算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !

今天和大家聊的问题叫做 敲击计数器,我们先来看题面:

https://leetcode-cn.com/problems/design-hit-counter/

Design a hit counter which counts the number of hits received in the past 5 minutes.

Each function accepts a timestamp parameter (in seconds granularity) and you may assume that calls are being made to the system in chronological order (ie, the timestamp is monotonically increasing). You may assume that the earliest timestamp starts at 1.

It is possible that several hits arrive roughly at the same time.

设计一个敲击计数器,使它可以统计在过去5分钟内被敲击次数。

每个函数会接收一个时间戳参数(以秒为单位),你可以假设最早的时间戳从1开始,且都是按照时间顺序对系统进行调用(即时间戳是单调递增)。

在同一时刻有可能会有多次敲击。

示例

HitCounter counter = new HitCounter();// 在时刻 1 敲击一次。
counter.hit(1);// 在时刻 2 敲击一次。
counter.hit(2);// 在时刻 3 敲击一次。
counter.hit(3);// 在时刻 4 统计过去 5 分钟内的敲击次数, 函数返回 3 。
counter.getHits(4);// 在时刻 300 敲击一次。
counter.hit(300);// 在时刻 300 统计过去 5 分钟内的敲击次数,函数返回 4 。
counter.getHits(300);// 在时刻 301 统计过去 5 分钟内的敲击次数,函数返回 3 。
counter.getHits(301);

解题

https://blog.csdn.net/weixin_44171872/article/details/108763682

主要思路:

(1)使用队列存储敲击的时间戳,利用先进先出的特性,来再后面将需要弹出的元素过滤掉;

(2)在需要获得某个时刻的前5分钟的敲击数量时,既300秒,可以使用当前时刻减去队列头部元素时刻值,判断是否大于等于300,来过滤掉过期元素即可;

class HitCounter {
public:queue<int> q;//存储结构/** Initialize your data structure here. */HitCounter() {}/** Record a hit.@param timestamp - The current timestamp (in seconds granularity). */void hit(int timestamp) {q.push(timestamp);//存储输入的时间戳}/** Return the number of hits in the past 5 minutes.@param timestamp - The current timestamp (in seconds granularity). */int getHits(int timestamp) {//处理过期的时间戳while(!q.empty()&&timestamp-q.front()>=300){q.pop();}//返回当前有效的时间戳的数量return q.size();}
};

好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。

上期推文:

LeetCode1-360题汇总,希望对你有点帮助!

LeetCode刷题实战361:轰炸敌人

​LeetCode刷题实战362:敲击计数器相关推荐

  1. ​LeetCode刷题实战371:两整数之和

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  2. ​LeetCode刷题实战375:猜数字大小 II

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  3. ​LeetCode刷题实战603:连续空余座位

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  4. ​LeetCode刷题实战623:在二叉树中增加一行

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  5. ​LeetCode刷题实战450:删除二叉搜索树中的节点

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  6. ​LeetCode刷题实战546:移除盒子

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  7. ​LeetCode刷题实战276:栅栏涂色

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  8. ​LeetCode刷题实战488:祖玛游戏

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  9. ​LeetCode刷题实战174:地下城游戏

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

最新文章

  1. memcached java 多线程_springboot使用memcache缓存
  2. maven 批量docker_Spring Boot 整合 docker
  3. Android开发--事件的处理/按键按下,弹起,触摸事件等
  4. 非支配排序遗传算法2(NSGA-II)
  5. Web前端技巧分享:教你用GD库生成验证码
  6. 图像分割-二阶导数零交叉点的含义
  7. 前端学习(602):集成vue插件
  8. 设 l í {a,b,c}* 是满足下述条件的符号串构成的语言,编译原理模拟试题1和2的答案...
  9. 基于JAVA+Servlet+JSP+MYSQL的酒店管理系统
  10. 北大主场夺金ACM-ICPC全球总决赛,总教练罗国杰分享背后“秘笈”
  11. python查看数据大小_python 监控文件大小
  12. 计算机系统动态库修复,xp系统恢复dll动态链接库的修复步骤
  13. BI工具怎么选型--BI厂商有哪些--BI系统多少钱--BI工具2019排行
  14. PS图层混合算法之四(亮光, 点光, 线性光, 实色混合)
  15. Dart factory 快速理解
  16. bcd转ascii码 流程图_BCD码与ASC码互转 | 学步园
  17. Scrum立会报告+燃尽图(Beta阶段第七次)
  18. 从今天起我想要热爱生活
  19. r语言如何计算均方误差
  20. 【C语言】程序结构、基本语法、数据类型

热门文章

  1. 转:vim的复制粘贴小结
  2. 快速傅里叶变换 (FFT)基础
  3. 1、ATK-LORA-01
  4. [内推] 微软亚洲研究院(上海)热招研究员和开发工程师:人工智能、云和边缘计算、大数据与知识挖掘等...
  5. 你的微信昵称,可能正在出卖你
  6. 论文阅读:Convolutional Neural Networks for Sentence Classification 卷积神经网络的句子分类
  7. 如何通过外网(互联网)访问本地计算机里的网站?Ngrok(内网穿透)帮你解决!
  8. librtmp的简单安装使用
  9. vfp报表纸张设置_vfp9终结一直以来的打印纸张设置
  10. MongoDB4.2.0安装包并配上安装教程