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

164
Visualizações
JS ¿Cómo puedo aumentar el rendimiento de este desafío de codificación Max/Min?

Estoy tratando de resolver algunos desafíos de codificación de 'hackerrank.com'. Estoy atascado en este:

Se le dará una matriz de enteros arr y un solo entero k . Debe crear una matriz arr' de longitud k a partir de elementos de arr de modo que se minimice su injusticia. La injusticia se define como max(arr') - min(arr') La función debe devolver la minimum possible unfairness

Mi código funciona bien para la mayoría de los casos de prueba. Sin embargo, en tres de esos casos de prueba, aquellos en los que el tamaño de arr y k es particularmente grande, fallan debido a un exceso del límite de tiempo dado.

¿Cómo puedo optimizar el rendimiento de mi código? Gracias por adelantado

 function maxMin(k, arr) { // create array to push unfairness values to var unfairnesses = []; // sort given array in ascending order arr.sort(function(a, b) { return a - b; }); // loop over sorted array for(var i = 0; i < arr.length - k + 1; i++) { // get array with the length of k at position i var tempArr = arr.slice(i, i + k); // determine Max and Min of the sliced array var tempArrMax = Math.max(...tempArr); var tempArrMin = Math.min(...tempArr); // get unfairness of the sliced array var thisUnfairness = tempArrMax - tempArrMin; // push sliced-array-unfairness to unfairnesses array unfairnesses.push(thisUnfairness); } // return minimal value of unfairnesses array return Math.min(...unfairnesses); }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Los dos primeros pasos podrían ser:

  1. Su matriz está ordenada. Por lo tanto, no es necesario usar Math.max y Math.min : el primer elemento de un segmento es el más pequeño, el último es el más grande.
  2. Cuando elimina las llamadas Math.max y Math.min , puede eliminar la llamada Array.prototype.slice . Luego te queda una ordenación y un solo paso sobre la matriz.
about 4 years ago · Juan Pablo Isaza Relatório

0

Para ordenar la matriz, ya está recorriendo todo el conjunto una vez. Luego estás haciendo un bucle en otro momento para averiguar cuál es el máximo y cuál es el mínimo.

Estás haciendo un bucle dos veces, ya que solo puedes hacer un bucle una vez si lo haces:

 function minMax(array) { const safeArray = array ?? [] // No max or min as array is empty if(safeArray.length === 0) return [undefined, undefined] let max: number = Number.MIN_SAFE_INTEGER let min: number = Number.MAX_SAFE_INTEGER for(let item of safeArray) { max = Math.max(item, max) min = Math.min(item, min) } return [max, min] }
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