Сложность: medium
Дан массив интервалов времени встреч intervals, где intervals[i] = [starti, endi]. Верните минимальное количество необходимых конференц-залов.
Пример:
Input: intervals = [[0,30],[5,10],[15,20]]
Output: 2
👨💻 Алгоритм:
1⃣Отсортируйте встречи по времени их начала и инициализируйте мин-кучу с временем окончания первой встречи.
2⃣Для каждой последующей встречи проверьте, свободна ли комната (сравните время начала встречи с минимальным временем окончания в куче):
Если свободна, обновите время окончания этой комнаты.
Если не свободна, добавьте новое время окончания в кучу.
3⃣После обработки всех встреч размер кучи будет равен минимальному количеству необходимых комнат.
😎 Решение:
import Foundation
class Solution {
func minMeetingRooms(_ intervals: [[Int]]) -> Int {
let sortedIntervals = intervals.sorted { $0[0] < $1[0] }
var heap: [Int] = [sortedIntervals[0][1]]
for i in 1..<sortedIntervals.count {
if sortedIntervals[i][0] >= heap.first! {
heap[0] = sortedIntervals[i][1]
heap.sort()
} else {
heap.append(sortedIntervals[i][1])
heap.sort()
}
}
return heap.count
}
}
Ставь 👍 и забирай 📚 Базу знаний