题目来源

leetcode:359. 日志速率限制器

题目描述

请你设计一个日志系统,可以流式接收日志以及它的时间戳。

该日志会被打印出来,需要满足一个条件:当且仅当日志内容 在过去的 10 秒钟内没有被打印过。

给你一条日志的内容和它的时间戳(粒度为秒级),如果这条日志在给定的时间戳应该被打印出来,则返回 true,否则请返回 false。

要注意的是,可能会有多条日志在同一时间被系统接收。

实例:

Logger logger = new Logger();
// 日志内容 "foo" 在时刻 1 到达系统
logger.shouldPrintMessage(1, "foo"); returns true;
// 日志内容 "bar" 在时刻 2 到达系统
logger.shouldPrintMessage(2,"bar"); returns true;
// 日志内容 "foo" 在时刻 3 到达系统
logger.shouldPrintMessage(3,"foo"); returns false;
// 日志内容 "bar" 在时刻 8 到达系统
logger.shouldPrintMessage(8,"bar"); returns false;
// 日志内容 "foo" 在时刻 10 到达系统
logger.shouldPrintMessage(10,"foo"); returns false;
// 日志内容 "foo" 在时刻 11 到达系统
logger.shouldPrintMessage(11,"foo"); returns true;

题目解析

思路

- 用一个map建立消息和时间戳之间的映射
- 当调用shouldPrintMessage时:
    - 如果发现msg不存在map中,那么建立映射并返回true
    - 如果发现msg在map中,那么先比较curr.time > 10 + map[msg].time,如果成立,那么需要返回true否则返回false,在返回之前需要更新map

实现

class Logger {std::unordered_map<std::string, int> m;
public:Logger() {}bool shouldPrintMessage(int timestamp, string message) {bool flag = false;if(!m.count(message) || m[message] + 10 < timestamp){flag =  true;}m[message] = timestamp;return flag;}
};

leetcode:359. 日志速率限制器相关推荐

  1. LeetCode 359. 日志速率限制器(哈希map)

    文章目录 1. 题目 2. 解题 1. 题目 请你设计一个日志系统,可以流式接收日志以及它的时间戳. 该日志会被打印出来,需要满足一个条件:当且仅当日志内容 在过去的 10 秒钟内没有被打印过. 给你 ...

  2. leetcode359. 日志速率限制器

    请你设计一个日志系统,可以流式接收日志以及它的时间戳. 该日志会被打印出来,需要满足一个条件:当且仅当日志内容 在过去的 10 秒钟内没有被打印过. 给你一条日志的内容和它的时间戳(粒度为秒级),如果 ...

  3. leetcode刷题目录总结

    题目 题目 技巧 相似的题目 其他 1. 无序数组中找出目标为target的两个数 先定义下一个数,然后找两位的数是否存在 高频, 大厂刷题班, 第27节 2.逆序链表两数相加 链表.各位加法 高频, ...

  4. Leetcode题目分类指南(单独刷题或学习算法书籍配合使用)

    Leetcode题目分类指南 笔者在学习<算法导论>同时,希望能够配合Leetcode的题目进行分类模块化练习,该分类为笔者自己根据做题学习经验,结合<算法导论>的内容,给出L ...

  5. leetcode刷题总结

    专栏 专栏 c语言基础 数据结构与算法 博客 分类 数据结构 算法 leetcode总结 错题 面试题 10.02. 变位词组 罗马数字转整数 c语言基础 二维数组 sizeof的用法 宏定义:取最大 ...

  6. 哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之中——实际应用

    上一节介绍了哈希表的原理与设计方法,这一节则直接python中现有的哈希表类型:哈希集合 set(集合)和哈希映射 dict(字典)来解决实际应用(刷题). 零.概念 在介绍实际应用之前,有一个概念我 ...

  7. LeetCode 700题 题解答案集合 Python

    2019.5.12更新至题号796,目前共有265题. 2019.5.26更新至题号72, 目前共有347题. 2019.6.16更新至题号70,目前共有382题. 2019.7.7更新至题号5120 ...

  8. 如何学好C语言--你的学渣朋友告诉你

    光说不练假把式,光练不说傻把式,又练又说真把式. 真实感受,不是我不想学,是我真的不知道我哪里不会啊和得怎么做啊?本文作者当初就是这么废掉的 推荐两个练习的网站 (一)C语言网 https://www ...

  9. LeetCode练习五:哈希表

    文章目录 一.哈希表 1.1 哈希表简介 1.2 哈希函数 1.2.1 直接定址法 1.2.2 除留余数法 1.2.3 平方取中法 2.4 基数转换法 1.3 哈希冲突 1.3.1 开放地址法 1.3 ...

最新文章

  1. 谷歌地图API位置请求_Google Maps API
  2. python __builtins__ credits类 (15)
  3. C语言矩阵M*N节省空间的算法(附完整源码)
  4. 可视化太酷辽!一文了解排序和搜索算法在前端中的应用
  5. React Native - 3 View, Text简介以及onPress onLongPress事件
  6. LeetCode 1834. 单线程 CPU(排序 + 优先队列)
  7. 微信开发php插件下载图片,微信开发之微信jsapi选择图片,上传图片,预览和下载图片方法...
  8. 吴恩达发布了大型X光数据集,斯坦福AI诊断部分超越人类 | AAAI 2019
  9. Silverlight 3一瞥
  10. FlowNet: Learning Optical Flow with Convolutional Networks
  11. 程序员面试头条被拒,一年后逆袭拿到offer【巴分巴秒】
  12. 用 Python 实现微信推送消息
  13. 算力之都杭州:楼市向何处去
  14. ck6.8整合php,CKplayer-超酷网页视频播放器
  15. 问题复盘:一个Redisson驱动源码BUG
  16. win7/win10安装Ubuntu20.04双系统详细操作步骤
  17. 网络安全之手机安全使用手册
  18. 双十二有哪些数码好物值得入手、双十二必买数码好物清单
  19. 萌新如何用Python实现人脸替换升级看高级程序员一步一步带你进阶
  20. CC1312R低功耗高集成度M4F内核Sub-1G收发芯片

热门文章

  1. Bandwagon安装禅道记录
  2. ios 下拉菜单Menu
  3. php 获取酷狗音乐真实地址
  4. 对于一个大数据应用项目/产品的落地,可以大致总结为五大步骤阶段?
  5. 智能车浅谈——硬件篇
  6. Maven详解(第二节)
  7. Python批量处理表格有用吗_python批量读入图片、处理并批量输出(可用于深度学习训练集的制作)...
  8. 如何有效的快速处理恶意差评?
  9. Vue3 + TS(一)- 邂逅Vue
  10. 使用EasyExcel完成导出导入功能