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

159
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 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