Leetcode #253 | #Medium | [[Куча]] | [[Интервалы]] ## Идея Идея завести min heap, важное замечание в этой задаче - номера комнат нам не важны, важен результат Сортируем по началу отрезка Идем по ним, если в heap ничего нет - кладем конец отрезка, если heap не пуст, то смотрим на него, если элемент heap меньше либо равен началу отрезка, то пересечения нет, удаляем элемент хипа и добавляем конец отрезка, если есть пересечение, то просто добавляем конец отрезка. Таким образом на вершине кучи всегда будет комната которая освободиться в мин момент времени В конце возвращаем размер кучи ## Big-O - Время ```O(Nlog(N))``` - Память ```O(N)``` ## Код ```Java class Solution { public int minMeetingRooms(List intervals) { if (intervals == null || intervals.isEmpty()) return 0; intervals.sort((a, b) -> a.start - b.start); PriorityQueue heap = new PriorityQueue<>(); for (Interval i : intervals) { if (!heap.isEmpty() && i.start >= heap.peek()) heap.poll(); heap.offer(i.end); } return heap.size(); } } ```