[Leetcode] 2402. Salas de reuniones III

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:

  1. Cada reunión se llevará a cabo en la sala no utilizada con el Más bajo número.
  2. 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.
  3. 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.

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

Pitó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))
				
			
es_ESEspañol