刷题的日常-警告一小时内使用相同员工卡大于等于三次的人

1,291 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 6 天,点击查看活动详情

雾气还没散,衣服干不了了,换不了

刷题的日常-2023年2月7号

一天一题,保持脑子清爽

警告一小时内使用相同员工卡大于等于三次的人

来自leetcode的 1604 题,题意如下:

力扣公司的员工都使用员工卡来开办公室的门。每当一个员工使用一次他的员工卡,安保系统会记录下员工的名字和使用时间。如果一个员工在一小时时间内使用员工卡的次数大于等于三次,这个系统会自动发布一个 警告

给你字符串数组 keyNamekeyTime ,其中 [keyName[i], keyTime[i]] 对应一个人的名字和他在 某一天 内使用员工卡的时间。

使用时间的格式是 24小时制 ,形如 "HH:MM" ,比方说 "23:51" 和 "09:49" 。

请你返回去重后的收到系统警告的员工名字,将它们按 字典序升序 排序后返回。

请注意 "10:00" - "11:00" 视为一个小时时间范围内,而 "23:51" - "00:10" 不被视为一小时内,因为系统记录的是某一天内的使用情况。

理解题意

通过题意,我们可以将信息整理如下:

  • 题目给出一个字符串数组,代表员工姓名
  • 另外给出一个字符串数组,代表登录时间
  • 两数组的长度是一致的,即 登录的名称和相同索引的时间是对应的
  • 要求我们返回在一个小时内至少登录过三次的员工

注意:

  • 数组中同一员工的登录日志 不一定有序
  • 返回的结果要按字典序升序

这两都是大坑,没注意错了两次

做题思路

因为是要统计员工的登录日志,所以我们可以先获取到对应员工的日志作为映射,然后对日志进行排序,然后用看看是否在一个小时的间隔内有没有超过两次即可。步骤如下:

  • 开辟一个Map对名称和时间进行映射
  • 遍历Map,对每个时间进行排序
  • 对排完序的时间进行扫描,间隔超过两次的进行记录
  • 对结果进行排序并返回

代码实现

代码实现如下:代码比较难看,就不给出来了, (^_^)10ebf75c3ecfebe7606fc9116625c5a.png