1604. Alert Using Same Key Card Three or More Times in a One Hour Period - cocoder39/coco39_LC GitHub Wiki
1604. Alert Using Same Key-Card Three or More Times in a One Hour Period
class Solution:
def alertNames(self, keyName: List[str], keyTime: List[str]) -> List[str]:
n = len(keyName)
name_to_times = collections.defaultdict(list)
for i in range(n):
name_to_times[keyName[i]].append(keyTime[i])
res = []
for name, times in name_to_times.items():
times.sort()
deque = collections.deque()
for time in times:
while deque and not self.isWithinHour(deque[0], time):
deque.popleft()
deque.append(time)
if len(deque) >= 3:
res.append(name)
break
res.sort()
return res
def isWithinHour(self, time1, time2):
hour1, min1 = time1.split(':')
hour1, min1 = int(hour1), int(min1)
hour2, min2 = time2.split(':')
hour2, min2 = int(hour2), int(min2)
diff = (hour2 - hour1) * 60 + (min2 - min1)
return diff <= 60