[JavaScript 刷题] 哈希表 - 日志速率限制器, leetcode 359

Posted GoldenaArcher

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JavaScript 刷题] 哈希表 - 日志速率限制器, leetcode 359相关的知识,希望对你有一定的参考价值。

[javascript 刷题] 哈希表 - 日志速率限制器, leetcode 359

github repo 地址: https://github.com/GoldenaArcher/js_leetcode,Github 的目录 大概 会更新的更勤快一些。

题目地址:359. Logger Rate Limiter

题目

如下:

Design a logger system that receives a stream of messages along with their timestamps. Each unique message should only be printed at most every 10 seconds (i.e. a message printed at timestamp t will prevent other identical messages from being printed until timestamp t + 10).

All messages will come in chronological order. Several messages may arrive at the same timestamp.

Implement the Logger class:

  • Logger() Initializes the logger object.
  • bool shouldPrintMessage(int timestamp, string message) Returns true if the message should be printed in the given timestamp, otherwise returns false.

解题思路

依旧看一下这道题刚开始给的解题题干:

var Logger = function () ;

/**
 * @param number timestamp
 * @param string message
 * @return boolean
 */
Logger.prototype.shouldPrintMessage = function (timestamp, message) ;

/**
 * Your Logger object will be instantiated and called as such:
 * var obj = new Logger()
 * var param_1 = obj.shouldPrintMessage(timestamp,message)
 */

本质上来说,理解 JavaScript 的 this 指向以及原型链函数中怎么调用 this。工作经验比较多的前端开发大概不会碰上这样的烦恼,不过我起点就是 ES6,ES5 真的有点不太熟练。

知道了 this 的指向之后,在 Logger 中新建一个状态用来保存出现过的信息即可。

使用 JavaScript 解题

其他语言不知道,这道题我觉得与其说考 HashMap 的使用,不如说靠 JavaScript 语言……

没有 constructor 语法糖的 JavaScript 瞬间变得困难起来了。

var Logger = function () 
  this.stamps = ;
;

Logger.prototype.shouldPrintMessage = function (timestamp, message) 
  if (!this.stamps[message] || this.stamps[message] <= timestamp) 
    this.stamps[message] = timestamp + 10;
    return true;
   else 
    return false;
  
;

以上是关于[JavaScript 刷题] 哈希表 - 日志速率限制器, leetcode 359的主要内容,如果未能解决你的问题,请参考以下文章

[JavaScript 刷题] 哈希表 - 两个数组的交集 II,leetcode 350

[JavaScript 刷题] 哈希表 - 存在重复元素, leetcode 217

[JavaScript 刷题] 哈希表 - 和为 K 的子数组, leetcode 560

[JavaScript 刷题] 哈希表 - 两个数组的交集 II,leetcode 350

[JavaScript 刷题] 哈希表 - 和为 K 的子数组, leetcode 560

[JavaScript 刷题] 哈希表 - 检查一个字符串是否包含所有长度为 K 的二进制子串, leetcode 1461