import java.util.*;
public class IntervalCoverProblem {
public static List<int[]> minCover(List<int[]> intervals) {
Collections.sort(intervals, Comparator.comparingInt(a -> a[0]));
List<int[]> result = new ArrayList<>();
int end = intervals.get(0)[1];
for (int i = 1; i < intervals.size(); i++) {
if (intervals.get(i)[0] > end) {
result.add(new int[]{intervals.get(i - 1)[0], end});
end = intervals.get(i)[1];
} else {
end = Math.max(end, intervals.get(i)[1]);
}
}
result.add(new int[]{intervals.get(intervals.size() - 1)[0], end});
return result;
}
public static void main(String[] args) {
List<int[]> intervals = new ArrayList<>();
intervals.add(new int[]{1, 3});
intervals.add(new int[]{2, 4});
intervals.add(new int[]{3, 6});
intervals.add(new int[]{8, 10});
List<int[]> result = minCover(intervals);
System.out.println("最少区间覆盖方案为:");
for (int[] interval : result) {
System.out.println("[" + interval[0] + ", " + interval[1] + "]");
}
}
}