Сложность: medium
Дан массив интервалов времени встреч intervals, где intervals[i] = [starti, endi]. Верните минимальное количество необходимых конференц-залов.
Пример:
Input: intervals = [[0,30],[5,10],[15,20]]
Output: 2
👨💻 Алгоритм:
1️⃣Отсортируйте встречи по времени их начала и инициализируйте мин-кучу с временем окончания первой встречи.
2️⃣Для каждой последующей встречи проверьте, свободна ли комната (сравните время начала встречи с минимальным временем окончания в куче):
Если свободна, обновите время окончания этой комнаты.
Если не свободна, добавьте новое время окончания в кучу.
3️⃣После обработки всех встреч размер кучи будет равен минимальному количеству необходимых комнат.
😎 Решение:
class Solution {
minMeetingRooms(intervals) {
intervals.sort((a, b) => a[0] - b[0])
const heap = [intervals[0][1]]
for (let i = 1; i < intervals.length; i++) {
if (intervals[i][0] >= heap[0]) {
heap.shift()
}
heap.push(intervals[i][1])
heap.sort((a, b) => a - b)
}
return heap.length
}
}Ставь 👍 и забирай 📚 Базу знаний