题目
请你设计一个日志系统,可以流式接收日志以及它的时间戳。
该日志会被打印出来,需要满足一个条件:当且仅当日志内容 在过去的 10 秒钟内没有被打印过。
给你一条日志的内容和它的时间戳(粒度为秒级),如果这条日志在给定的时间戳应该被打印出来,则返回 true,否则请返回 false。
要注意的是,可能会有多条日志在同一时间被系统接收。
示例1:
1 | Logger logger = new Logger(); |
解法
解法一:
借助HashMap
如果当前日志不在map中,将日志加入map中,返回true;
如果当前日志在map中,判断时间,超过10s,返回true,同时更新最新的时间;否则返回false,
Java
1 | class Logger { |
解法二:
借助HashMap。
遍历数组,在遍历的过程中,判断该数字是否已经存在HashMao中了。
如果已经存在,挨个计算它之前的索引和当前索引差是否超过k,没有则返回true;
否则把当前索引加入索引列表中
1 | public boolean containsNearbyDuplicate(int[] nums, int k) { |
解法三:
使用HashSet。
遍历数组,对于每个元素做以下操作:
- 在散列表中搜索当前元素,如果找到了就返回
true
。 - 在散列表中插入当前元素。
- 如果当前散列表的大小超过了 kkk, 删除散列表中最旧的元素。
返回false
1 | public boolean containsNearbyDuplicate(int[] nums, int k) { |