开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 6 天,点击查看活动详情
雾气还没散,衣服干不了了,换不了
刷题的日常-2023年2月7号
一天一题,保持脑子清爽
警告一小时内使用相同员工卡大于等于三次的人
来自leetcode的 1604 题,题意如下:
力扣公司的员工都使用员工卡来开办公室的门。每当一个员工使用一次他的员工卡,安保系统会记录下员工的名字和使用时间。如果一个员工在一小时时间内使用员工卡的次数大于等于三次,这个系统会自动发布一个 警告 。
给你字符串数组
keyName和keyTime,其中[keyName[i], keyTime[i]]对应一个人的名字和他在 某一天 内使用员工卡的时间。使用时间的格式是 24小时制 ,形如 "HH:MM" ,比方说 "23:51" 和 "09:49" 。
请你返回去重后的收到系统警告的员工名字,将它们按 字典序升序 排序后返回。
请注意 "10:00" - "11:00" 视为一个小时时间范围内,而 "23:51" - "00:10" 不被视为一小时内,因为系统记录的是某一天内的使用情况。
理解题意
通过题意,我们可以将信息整理如下:
- 题目给出一个字符串数组,代表员工姓名
- 另外给出一个字符串数组,代表登录时间
- 两数组的长度是一致的,即 登录的名称和相同索引的时间是对应的
- 要求我们返回在一个小时内至少登录过三次的员工
注意:
- 数组中同一员工的登录日志 不一定有序
- 返回的结果要按字典序升序
这两都是大坑,没注意错了两次
做题思路
因为是要统计员工的登录日志,所以我们可以先获取到对应员工的日志作为映射,然后对日志进行排序,然后用看看是否在一个小时的间隔内有没有超过两次即可。步骤如下:
- 开辟一个Map对名称和时间进行映射
- 遍历Map,对每个时间进行排序
- 对排完序的时间进行扫描,间隔超过两次的进行记录
- 对结果进行排序并返回
代码实现
代码实现如下:代码比较难看,就不给出来了, (^_^)。