import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class GreedyIntervalCover {
static class Interval {
int start;
int end;
public Interval(int start, int end) {
this.start = start;
this.end = end;
}
}
public static List<Interval> greedyIntervalCover(List<Interval> intervals) {
List<Interval> result = new ArrayList<>();
if (intervals.isEmpty()) return result;
Collections.sort(intervals, Comparator.comparingInt(i -> i.end));
Interval current = intervals.get(0);
result.add(current);
for (Interval interval : intervals) {
if (interval.start > current.end) {
current = interval;
result.add(current);
}
}
return result;
}
public static void main(String[] args) {
List<Interval> intervals = new ArrayList<>();
intervals.add(new Interval(1, 3));
intervals.add(new Interval(2, 4));
intervals.add(new Interval(3, 6));
intervals.add(new Interval(5, 7));
intervals.add(new Interval(8, 9));
List<Interval> result = greedyIntervalCover(intervals);
for (Interval interval : result) {
System.out.println("[" + interval.start + ", " + interval.end + "]");
}
}
}