Explore diversas soluciones LeetCode en Python, C++, JavaScript, SQL y TypeScript. Ideal para preparación de entrevistas, aprendizaje y práctica de código en múltiples lenguajes de programación. Enlace de repositorio de Github
Te dan un numero entero norte
. Hay norte
habitaciones numeradas desde 0
a n-1
.
Se le proporciona una matriz de enteros 2D reuniones
dónde reuniones[i] = [inicio i , fin i ]
significa que se llevará a cabo una reunión durante el medio cerrado intervalo de tiempo [empezar i , terminar i )
.Todos los valores de empiezo yo
son único.
Las reuniones se distribuyen en salas de la siguiente manera:
- Cada reunión se llevará a cabo en la sala no utilizada con el Más bajo número.
- Si no hay salas disponibles, la reunión se retrasará hasta que quede libre una sala. La reunión retrasada debe tener el mismo duración que la reunión original.
- Cuando una sala queda sin uso, las reuniones que tengan una sala original anterior comenzar Se debe dar tiempo a la habitación.
Devolver el número de la sala que celebró más reuniones. Si hay varias habitaciones, regresar la habitación con el Más bajo número.
A intervalo semicerrado [a, b)
es el intervalo entre a
y b
incluido a
y sin incluir b
.
Ejemplo 1:
Aporte: n = 2, reuniones = [[0,10],[1,5],[2,7],[3,4]] Producción: 0 Explicación: - En el momento 0, ambas salas no están en uso. La primera reunión comienza en la sala 0. - En el momento 1, solo la sala 1 no está en uso. La segunda reunión comienza en la sala 1. - En el momento 2, ambas salas están en uso. utilizada. La tercera reunión se retrasa. - En el momento 3, ambas salas están en uso. La cuarta reunión se retrasa. - En el momento 5, la reunión en la sala 1 finaliza en la sala 1 durante el período de tiempo [5. ,10) - En el momento 10, las reuniones en ambas salas finalizan. La cuarta reunión comienza en la sala 0 durante el período de tiempo [10,11).
Ejemplo 2:
Aporte: n = 3, reuniones = [[1,20],[2,10],[3,5],[4,9],[6,8]] Producción: 1 Explicación: - En el momento 1, no se utilizan las tres salas. La primera reunión comienza en la sala 0. - En el momento 2, las salas 1 y 2 no se utilizan. La segunda reunión comienza en la sala 1. - En el momento 3, solo la sala. 2 no se está utilizando. La tercera reunión comienza en la sala 2. - En el momento 4, las tres salas están en uso. La cuarta reunión se retrasa. - En el momento 5, la reunión en la sala 2 finaliza. 2 para el período de tiempo [5,10). - En el momento 6, se están utilizando las tres salas. La quinta reunión se retrasa. - En el momento 10, las reuniones en las salas 1 y 2 comienzan en la sala 1. para el período de tiempo [10,12). La sala 0 celebró 1 reunión, mientras que las salas 1 y 2 celebraron 2 reuniones cada una, por lo que devolvemos 1.
Restricciones:
1 <= norte <= 100
1 <= reuniones.duración <= 10 5
reuniones[i].duración == 2
0 <= inicio i < final i <= 5 * 10 5
- todos los valores de
empiezo yo
son único.
Tabla de contenido
PalancaPitón
Complejidad del tiempo de #: O(nlogn) Complejidad del espacio de #: O(n) de heapq import heappop, heappush de escribir import List clase Solución: def mostBooked(self, n: int, reuniones: List[List[int]]) -> int: reuniones.sort() habitaciones disponibles = [i para i en rango(n)] habitaciones usadas = [] contador = [0] * n para hora de inicio, hora de finalización en reuniones: while habitaciones usadas y habitaciones usadas[0][0] <= hora de inicio : finalizando, habitación = heappop(habitaciones usadas) heappush(habitaciones disponibles, habitación) si no hay habitaciones disponibles: fin, habitación = heappop(habitaciones usadas) hora final = fin + (hora de finalización - hora de inicio) heappush(habitaciones disponibles, habitación) habitación = heappop(habitaciones disponibles) heappush( usedRooms, (endTime, room)) contador[sala] += 1 retorno contador.index(max(contador)) n = 3 reuniones = [[1, 20], [2, 10], [3, 5], [ 4, 9], [6, 8]] print(Solución().mostBooked(n, reuniones))