3. What will be the output of the following Java code that merges overlapping intervals?
import java.util.*;
public class MergeIntervals {
public static List merge(List intervals) {
intervals.sort((a, b) -> a[0] - b[0]);
List merged = new ArrayList<>();
for (int[] interval : intervals) {
if (merged.isEmpty() || merged.get(merged.size() - 1)[1] < interval[0]) {
merged.add(interval);
} else {
merged.get(merged.size() - 1)[1] = Math.max(merged.get(merged.size() - 1)[1], interval[1]);
}
}
return merged;
}
public static void main(String[] args) {
List intervals = new ArrayList<>();
intervals.add(new int[]{1, 3});
intervals.add(new int[]{2, 6});
intervals.add(new int[]{8, 10});
intervals.add(new int[]{15, 18});
List result = merge(intervals);
for (int[] interval : result) {
System.out.print("[" + interval[0] + "," + interval[1] + "] ");
}
}
}