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

力扣公司的员工都使用员工卡来开办公室的门。每当一个员工使用一次他的员工卡,安保系统会记录下员工的名字和使用时间。如果一个员工在一小时时间内使用员工卡的次数大于等于三次,这个系统会自动发布一个 警告 。
给你字符串数组 keyName 和 keyTime ,其中 [keyName[i], keyTime[i]] 对应一个人的名字和他在 某一天 内使用员工卡的时间。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/alert-using-same-key-card-three-or-more-times-in-a-one-hour-period
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

先把keytime处理成int,然后用np.argsort返回keytime的升序索引,下面遍历的时候直接用这个升序索引访问name和time。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from numpy import argsort
class Solution(object):
def alertNames(self, keyName, keyTime):
"""
:type keyName: List[str]
:type keyTime: List[str]
:rtype: List[str]
"""
keyTime = [int(k.replace(":","")) for k in keyTime]
sequence = argsort(keyTime)
result = set()
order = defaultdict(list)

for index in sequence:
name = keyName[index]
order[name].append(keyTime[index])
if len(order[name]) >= 3:
if (int(order[name][-1]) - int(order[name][-3])) <= 100 :
result.add(name)
result = list(result)
result.sort()
return result