编辑代码

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] + "]");
        }
    }
}