Solution 1

  • TimeO(n log n)
  • SpaceO(n)

where, n is the length of keyTime

Python
class Solution:
    '''
    Time Complexity: O(n log n)
    Space Complexity: O(n)
    where, n is the length of keyTime
    '''
    def alertNames(self, keyName: List[str], keyTime: List[str]) -> List[str]:
        times = {}
        out = []

        for i, key in enumerate(keyName):
            times.setdefault(key, []).append(keyTime[i])
        
        for key in times:
            slots = times[key]
            slots.sort()
            for i in range(len(slots)-2):
                startHr, startMin = slots[i].split(":")
                start = int(startHr)*60 + int(startMin)
                endHr, endMin = slots[i+2].split(":")
                end = int(endHr)*60 + int(endMin)
                if end <= start + 60:
                    out.append(key)
                    break
        return sorted(out)
Leet Code/python.py · L3681–3706