LeetCode 253 — Meeting Rooms II
Quinto problema de Intervals. ¿Cuántas salas mínimas necesarias? Min-heap por end times.
Enunciado
Intervalos. Devuelve número mínimo de salas para asistir a todas.
Solución — Min-heap de ends
import heapq
class Solution:
def minMeetingRooms(self, intervals):
intervals.sort(key=lambda x: x[0])
heap = [] # ends de salas activas
for s, e in intervals:
if heap and heap[0] <= s:
heapq.heappop(heap) # liberar sala
heapq.heappush(heap, e)
return len(heap)Análisis: O(n log n).
Lógica
Para cada meeting nueva, si la sala que termina antes ya está libre (heap[0] <= s), reutilízala. Si no, abre nueva. Tamaño final del heap = salas necesarias.
Solución 2 — Two arrays (start/end)
class Solution:
def minMeetingRooms(self, intervals):
starts = sorted(i[0] for i in intervals)
ends = sorted(i[1] for i in intervals)
rooms = end_idx = 0
for s in starts:
if s < ends[end_idx]:
rooms += 1
else:
end_idx += 1
return roomsIgual O(n log n) sin heap.
Conexiones
Estado
- Leído
- Implementado desde cero
- Resuelto en LeetCode