July 16, 2022

1604. Alert Using Same Key-Card Three or More Times in a One Hour Period

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;
    }
}
comments powered by Disqus