Untitled
import java.util.*; public class Solution { public List<Interval> employeeFreeTime(List<List<Interval>> schedule) { List<Interval> allIntervals = new ArrayList<>(); // Flatten all intervals into a single list for (List<Interval> employee : schedule) { allIntervals.addAll(employee); } // Sort intervals by their start times allIntervals.sort((a, b) -> Integer.compare(a.start, b.start)); // Merge intervals and find free time List<Interval> freeTime = new ArrayList<>(); Interval prev = allIntervals.get(0); for (int i = 1; i < allIntervals.size(); i++) { Interval cur = allIntervals.get(i); if (cur.start <= prev.end) { //// Merge intervals prev.end = Math.max(prev.end, cur.end); } else { // Found a gap freeTime.add(new Interval(prev.end, cur.start)); prev = cur; // Move prev to cur } } return freeTime; } }
Leave a Comment