Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

156
Vistas
Encontrar la viabilidad del rendimiento utilizando cadenas de matriz

Aquí están los detalles del requisito:

 time = ["09-13", "12-14"] getResult(time) = false

La primera función es de 9 a. m. a 1 p. m. y la segunda comienza a las 12 p. m. Por lo tanto, no podrá ver cada función completa.

 time = ["07-09", "10-12", "15-19"] getResult(time) = true

pero no pude obtener el resultado. Estoy encontrando un desafío para hacerlo. alguien me ayuda?

aquí está mi intento:

 const getResult = (time) => { const nums = []; let pre = 0; time.map((item,index) => { item.split('-').map((v,i) => { nums.push(+v);//converting as number }); }); const result = nums.map((v,i) => { if(!i) return; console.log(v-pre)//but logically this is not works pre = v; }) } //time = ["09-13", "12-14"]; //false time = ["07-09", "10-12", "15-19"] //true getResult(time); //should be false

Gracias por adelantado.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Convierta cada rango en cada hora individual dentro del rango, luego:

  • si la hora ya existe en la matriz, devuelve falso
  • de lo contrario, empuje a la matriz

 const getResult = (ranges) => { const filled = []; for (const range of ranges) { let [start, end] = range.split('-').map(Number); while (end !== start) { // Exclusive if (filled.includes(start)) return false; filled.push(start); start++; } } return true; }; console.log(getResult(["09-13", "12-14"])); console.log(getResult(["07-09", "10-12", "15-19"]));

Su enfoque actual no parece tener ninguna noción de convertir los rangos en sus horas individuales o de identificar superposiciones.

about 4 years ago · Juan Pablo Isaza Denunciar

0

  • Ordene los intervalos de tiempo en función de su hora de inicio.
  • Recorra todos los intervalos de tiempo en la matriz ordenada y si en algún momento el inicio de un intervalo es menor que el final del anterior, devuelva false .
  • Si se agota todo el ciclo, devuelve true .

 function isValid(time) { const sortedTime = [...time].sort((a, b) => { const slotA = Number(a.split("-")[0]); const slotB = Number(b.split("-")[0]); return slotA - slotB; }); let last; for (let t of sortedTime) { const [start, end] = t.split("-").map(Number); if (last && start < last) { return false; } last = end; } return true; } console.log(isValid(["12-14", "09-13"])); console.log(isValid(["10-12", "07-09", "15-19"]));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Su formato ya es útil para comparaciones directas >= , una vez que dividimos los valores en sus - . Entonces, simplemente podemos ordenar los valores, luego verificar que en todos los casos después del primero, que la parte inicial (antes de - ) sea al menos tan grande como la parte final (después de - ) del valor anterior. Podría verse así:

 const feasible = (times) => [... times] .sort () .every ((t, i, a) => i == 0 || t .split ('-') [0] >= a [i - 1] .split ('-') [1]) console .log (feasible (["09-13", "12-14"])) console .log (feasible (["07-09", "10-12", "15-19"]))

Usamos el i == 0 || simplemente para evitar probar el primero de los valores ordenados.

Esto implica dividir cada uno de los valores dos veces (bueno, excepto el primero). Si esta ineficiencia le molesta, podemos resolverla (usando más memoria; ¡siempre hay una compensación!) dividiéndolos y guardando el resultado:

 const feasible = (times) => [... times] .sort () .map (s => s .split ('-')) .every ((t, i, a) => i == 0 || t [0] >= a [i - 1] [1])
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda