[LeetCode] Programador de 1229. Reunión

Programar una reunión. Significado de las preguntas es programar dos personas y una duración larga, el horario de la representación intervalo, por favor devuelva dos personas pueden tener la oportunidad de longitud de tiempo que una duración de lo que el intervalo de conferencia Sí. Ejemplo,

Ejemplo 1:

Entrada: slots1 = [[10,50], [60120], [140210]], slots2 = [[0,15], [60,70]], la duración = 8 
Salida: [60,68]

Ejemplo 2:

Entrada: slots1 = [[10,50], [60120], [140210]], slots2 = [[0,15], [60,70]], la duración = 12 
Salida: []

Analogía, como el primer ejemplo, que quieren abrir una larga reunión de 8 minutos, los dos siguientes horario, el resultado devuelto es de 60 - 68 minutos de tiempo de los dos se han cumplido.

Este problema no se deben considerar inválido el caso, como el mayor intervalo de tiempo de inicio que el intervalo de tiempo final, que sería mejor para hacer frente a algunos. La idea sigue siendo la clásica línea de exploración . la discusión dentro de los votos más altos en respuesta [04/04/2020] a una cola de prioridad de la práctica, no he descubierto por completo. Su idea es deshacerse de los dos hombres después de un intervalo válido (intervalo de sí mismo es menor que el tiempo de duración de la reunión), los dos hombres se unen todos pq intervalo válido, pq se ordenan por la hora de inicio del intervalo. Pop un primer intervalo, comparando el intervalo de tiempo final de [1] es mayor que igual a la parte superior del intervalo de pila [0] + duración. Yo no entiendo es donde ha estado aquí es la forma de garantizar la parte superior de la pila de elementos pop y elementos de la parte superior de la pila actual no proviene de la misma persona. El cual los estudiantes me enseñan por favor, muchas gracias.

Estoy aquí para proporcionar un enfoque no pq. Intervalos de los dos primeros términos de la secuencia de tiempo de inicio, después de atravesar los punteros son intervalos dobles dos personas, mientras que en busca de la posible inicio y al final de cada intervalo en el que, si inicio satisfechos + duración <= fin de la grabación se inicia y la corriente terminar. Si no hay tal caso devuelve una lista vacía.

Tiempo O (nlogn) - especie

Espacio O (1)

implementación de Java

1  clase de soluciones {
 2      pública List <Integer> minAvailableDuration ( int [] [] slots1, int [] [] slots2, int duración) {
 3          PriorityQueue < int []> = pq nueva PriorityQueue <> (Comparator.comparing (a - > a [0 ]));
4          para ( int [] s: slots1) {
 5              si (s [1] - s [0]> = duración) {
 6                  pq.offer (s);
7              }
 8          }
 9          para ( int [] s: slots2) {
10              si (s [1] - s [0]> = duración) {
 11                  pq.offer (s);
12              }
 13          }
 14          mientras que (pq.size ()> 1 ) {
 15              si (pq.poll () [1]> = pq.peek () [0] + duración) {
 16                  retorno Arrays.asList (pq.peek () [0], pq.peek () [0] + duración);
17              }
 18          }
 19          de retorno Arrays.asList ();
20      }
 21 }

 

implementación de JavaScript

1  / * *
 2  * @param {número [] []} slots1
 3  @ param * {número [] []} slots2
 4  * @param {número} duración
 5  * @return {número []}
 6   * / 
7  var minAvailableDuration = función (slots1, slots2, duración) {
 8      slots1.sort ((a, b) => a [0] - b [0 ]);
9      slots2.sort ((a, b) => a [0] - b [0 ]);
10      Sea m = slots1.length;
11      Sea n = slots2.length;
12      vamos i = 0 ;
13      Sea j = 0 ;
14     mientras que (i <m && j < n) {
 15          permiten START = Math.max (slots1 [i] [0], slots2 [j] [0 ]);
16          final let = Math.min (slots1 [i] [1], slots2 [j] [1 ]);
17          Si (start + duración <= final) {
 18              de retorno [start, start + duración];
19          } más  si (slots1 [i] [1] <slots2 [j] [1 ]) {
 20              i ++ ;
21          } más {
 22              j ++ ;
23          }
 24      }
 25     volver [];
26 };

 

Supongo que te gusta

Origin www.cnblogs.com/aaronliu1991/p/12635738.html
Recomendado
Clasificación