To solve the problem, I sorted all the meeting intervals by their start day and merged any overlapping ones to avoid double-counting days. After merging, I calculated the total number of unique meeting days by summing the length of each merged interval. Finally, I subtracted the total meeting days from the given number of days to get the count of days when the employee is available but has no meetings.
class Solution:
def countDays(self, days: int, meetings: List[List[int]]) -> int:
meetings.sort()
merged = []
for start, end in meetings:
if not merged or merged[-1][1] < start:
merged.append([start, end])
else:
merged[-1][1] = max(merged[-1][1], end)
meeting_days = sum(end - start + 1 for start, end in merged)
return days - meeting_days
- Time: O(nlogn)
- Space: O(n)
