#458 Поиск пересекающихся событий

Компании:
VK
Темы:
АлгоритмыСортировкаПрактика

Есть список событий, у которых в наличии поля с id этого события, временем старта события и временем завершения события.

Нужно составить алгоритм выяснения, есть ли среди этих событий конфликтующие, то есть интервалы времени которых пересекаются.

Если время старта одного события совпадает со временем окончания другого, то такие события будем считать пересекающимися.

Примеры:

Input: [{id="1", startTime=1, endTime=5}, {id="2", startTime=4, endTime=7}]
Output: true

Input: [{id="1", startTime=1, endTime=5}, {id="2", startTime=7, endTime=9}, {id="3", startTime=4, endTime=7}]
Output: true

Input: [{id="1", startTime=1, endTime=5}, {id="2", startTime=6, endTime=7}]
Output: false

Input: []
Output: false
public class ConflictFinder {

    public boolean findConflicts(List<Event> events) {
        return false; // TODO
    }

    public static class Event {
        private final String id;
        private final long startTime;
        private final long endTime;

        public Event(String id, long startTime, long endTime) {
            this.id = id;
            this.startTime = startTime;
            this.endTime = endTime;
        }

        public String getId() {
            return id;
        }

        public long getStartTime() {
            return startTime;
        }

        public long getEndTime() {
            return endTime;
        }
    }
}

Разбор вопроса

Ментор
Ответь как на реальном собеседовании. Я задам уточняющие вопросы, а затем сравню твой ответ с эталонным и покажу точность в %.
Войди, чтобы начать диалог Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти