Java Algorithms
111 subscribers
625 photos
623 links
Добро пожаловать💡

Канал для всех, кто ищет качественные решения и объяснения задач на Java

Roadmap по каналу:
https://t.me/algoroadmap/2
Download Telegram
Решение задачи 253

Time: O(nlogn)
Space: O(n)

⚡️ Идея
инициализируем PriorityQueue (minHeap) для хранения времени окончания встреч
отсортируем интервалы по времени начала, а затем пройдем по ним:
проверяем, свободна ли какая-либо комната, сравнивая текущее начало с верхним элементом очереди, поскольку это будет комната, которая освободится раньше всех
если текущая встреча начинается позже, значит мы можем занять освободившуюся комнату и удалить ее из очереди
далее добавляем текущее окончание встречи в очередь
в результате ответом будет являться размер очереди

#solution253
Please open Telegram to view this post
VIEW IN TELEGRAM
Решение задачи 253

Time: O(n log(n))
Space: O(n)

💡 Идея
🟦Сначала отсортируем все интервалы встреч по времени начала, что позволит в правильном порядке отслеживать, какие комнаты освобождаются, а какие ещё заняты

🟦Далее для текущей встречи стоит необходимость выбора комнаты, поэтому полезно знать самое раннее завершение какой-либо встречи, для чего используем PriorityQueue, в которую последовательно добавляем времена окончания всех встреч

🟦Если текущая встреча начинается после завершения самой ранней встречи (pq.peek()), значит, комната освобождается, и можно снова её использовать, а время окончания этой встречи из очереди удалить

🟦В результате размер очереди указывает на максимальное количество одновременно активных встреч, что и есть минимально необходимое число переговорных комнат

👩‍💻 Java Algo | #solution253
Please open Telegram to view this post
VIEW IN TELEGRAM