[Leetcode] 0057. Insertar intervalo

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

Tabla de contenido

Medio

 


Se le proporciona una serie de intervalos que no se superponen intervalos dónde intervalos[i] = [inicio i , final i ] representan el inicio y el final del yo intervalo y intervalos está ordenado en orden ascendente por empiezo yoTambién te dan un intervalo. nuevoIntervalo = [inicio, fin] que representa el inicio y el final de otro intervalo.

Insertar nuevointervalo en intervalos tal que intervalos todavía está ordenado en orden ascendente por empiezo yo y intervalos todavía no tiene intervalos superpuestos (fusione los intervalos superpuestos si es necesario).

Devolver intervalos después de la inserción.

Nota que no necesitas modificar intervalos en el lugar. Puede crear una nueva matriz y devolverla.

Ejemplo 1:

Aporte: intervalos = [[1,3],[6,9]], nuevoIntervalo = [2,5]
Producción: [[1,5],[6,9]]

Ejemplo 2:

Aporte: intervalos = [[1,2],[3,5],[6,7],[8,10],[12,16]], nuevoIntervalo = [4,8]
Producción: [[1,2],[3,10],[12,16]]
Explicación: Porque el nuevo intervalo [4,8] se superpone con [3,5],[6,7],[8,10].

Restricciones:

  • 0 <= intervalos.longitud <= 10 4
  • intervalos[i].longitud == 2
  • 0 <= inicio i <= final i <= 10 5
  • intervalos está ordenado por empiezo yo en ascendiendo orden.
  • nuevointervalo.longitud == 2
  • 0 <= inicio <= fin <= 10 5

Pitón

				
					Complejidad de tiempo de #: O(n) Complejidad de espacio de #: O(n) al escribir clase de lista de importación Solución: def insert(self, intervalos: Lista[Lista[int]], nuevoIntervalo: Lista[int]) -> Lista[Lista [int]]: resultado = [] i = 0 mientras i < len(intervalos) y newInterval[0] > intervalos[i][1]: resultado.append(intervalos[i]) i += 1 mientras i < len (intervalos) y nuevoIntervalo[1] >= intervalos[i][0]: nuevoInterval[0] = min(intervalos[i][0], nuevoInterval[0]) nuevoInterval[1] = max(intervalos[i][ 1], newInterval[1]) i += 1 result.append(newInterval) mientras que i < len(intervals): result.append(intervals[i]) i += 1 devuelve resultado intervalos = [[1, 2], [3, 5], [6, 7], [8, 10], [12, 16]] nuevoIntervalo = [4, 8] print(Solución().insertar(intervalos, nuevoIntervalo))
				
			
es_ESEspañol