1604. Alert Using Same Key-Card Three or More Times in a One Hour Period
class Solution {
public List<String> alertNames(String[] keyName, String[] keyTime) {
Map<String, List<Integer>> map = new HashMap<>();
for (int i = 0; i < keyName.length; i++) {
String name = keyName[i];
String[] curKeyTime = keyTime[i].split(":");
int time = Integer.valueOf(curKeyTime[0]) * 60 + Integer.valueOf(curKeyTime[1]);
if (map.containsKey(name)) {
map.get(name).add(time);
} else {
List<Integer> timeList = new ArrayList<>();
timeList.add(time);
map.put(name, timeList);
}
}
List<String> res = new ArrayList<>();
for (String name : map.keySet()) {
List<Integer> timeList = map.get(name);
Collections.sort(timeList);
if (timeList.size() > 2) {
for (int i = 0; i < timeList.size() - 2; i++) {
int time1 = timeList.get(i);
int time2 = timeList.get(i + 2);
if (time2 - time1 <= 60) {
res.add(name);
break;
}
}
}
}
Collections.sort(res);
return res;
}
}