Skip to content

Commit bca6d5f

Browse files
authored
Create alert-using-same-key-card-three-or-more-times-in-a-one-hour-period.py
1 parent 9c14f1d commit bca6d5f

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Time: O(nlogn)
2+
# Space: O(n)
3+
4+
import collections
5+
import itertools
6+
7+
8+
class Solution(object):
9+
def alertNames(self, keyName, keyTime):
10+
"""
11+
:type keyName: List[str]
12+
:type keyTime: List[str]
13+
:rtype: List[str]
14+
"""
15+
THRESHOLD = 3
16+
name_to_times = collections.defaultdict(list)
17+
for name, hour_minute in itertools.izip(keyName, keyTime):
18+
hour, minute = map(int, hour_minute.split(':'))
19+
name_to_times[name].append(hour*60 + minute)
20+
names = []
21+
for name, times in name_to_times.iteritems():
22+
times.sort()
23+
left = 0
24+
for right, time in enumerate(times):
25+
while time-times[left] > 60:
26+
left += 1
27+
if right-left+1 >= THRESHOLD:
28+
names.append(name)
29+
break
30+
names.sort()
31+
return names

0 commit comments

Comments
 (0)