Получить интервал, перекрывающий максимальное количество других интервалов. Java

Нужно написать программу на Java, которая выдает границы нового интервала, который перекрывает максимальное количество других интервалов. Например, для интервалов [1, 4], [2, 6], [3, 5], [7, 8], новый интервал будет [2, 4]. Мой код работает, но вывод неверный. Для указанного примера мой вывод [3,4], тогда как должно быть [2,4]. Подскажите пожалуйста, в чем может быть ошибка.

public static int[] findMaxOverlapInterval(List intervals) {

 List<Event> events = new ArrayList<>();
    for (Interval interval : intervals) {
        events.add(new Event(interval.start, true));
        events.add(new Event(interval.end, false));
    }
    Collections.sort(events);
    int maxOverlaps = 0;
    int currentOverlaps = 0;
    int maxOverlapStart = -1;
    int maxOverlapEnd = -1;
    for (Event event : events) {
        if (event.isStart) {
            currentOverlaps++;
            if (currentOverlaps > maxOverlaps) {
                maxOverlaps = currentOverlaps;
                maxOverlapStart = event.time;
            }
        } else {
            if (currentOverlaps == maxOverlaps) {
                maxOverlapEnd = event.time;
            }
            currentOverlaps--;
        }
    }
    return new int[]{maxOverlapStart, maxOverlapEnd};
}

Ответы (1 шт):

Автор решения: talex moved to Codidact
var start = events.stream()
    .filter(x -> !x.isStart)
    .max(x -> x.time);
    
var end = events.stream()
    .filter(x -> x.isStart)
    .min(x -> x.time);

Результат [starrt -1, end + 1].

→ Ссылка