Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

167
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda