freeCodeCamp/guide/spanish/certifications/javascript-algorithms-and-d.../basic-algorithm-scripting/where-do-i-belong/index.md

10 KiB

title localeTitle
Where Do I Belong Dónde pertenezco

:triangular_flag_on_post: Recuerda usar Read-Search-Ask si te atascas. Tratar de emparejar el programa :busts_in_silhouette: y escribe tu propio código :pencil:

:checkered_flag: Explicación del problema:

Esto puede ser un problema difícil de entender. Debe encontrar en qué lugar de la matriz se debe insertar un número por orden y devolver el índice a donde debe ir.

Enlaces relevantes

:speech_balloon: Sugerencia: 1

Lo primero que debe hacer es ordenar la matriz de menor a mayor, solo para facilitar el código. Aquí es donde entra la ordenación, necesita una función de devolución de llamada, por lo que debe crearla.

intenta resolver el problema ahora

:speech_balloon: Sugerencia: 2

Una vez que la matriz esté ordenada, solo busque el primer número que sea más grande y devuelva el índice.

intenta resolver el problema ahora

:speech_balloon: Sugerencia: 3

Si no hay un índice para ese número, también tendrá que lidiar con ese caso.

intenta resolver el problema ahora

¡Alerta de spoiler!

señal de advertencia

¡Solución por delante!

:beginner: Solución de código básico:

function getIndexToIns(arr, num) { 
  arr.sort(function(a, b) { 
    return a - b; 
  }); 
 
  for (var a = 0; a < arr.length; a++) { 
    if (arr[a] >= num) 
      return a; 
  } 
 
  return arr.length; 
 } 

:rocket: Ejecutar código

Explicación del código:

  • Primero, .sort(callbackFuntion) la matriz utilizando .sort(callbackFuntion) para clasificarla de menor a mayor, de izquierda a derecha.
  • Luego uso un bucle for para comparar los elementos de la matriz a partir del más pequeño. Cuando un elemento de la matriz es mayor que el número con el que comparamos, devolvemos el índice como un entero.

Enlaces relevantes

:beginner: Solución de código básico:

function getIndexToIns(arr, num) { 
  // Find my place in this sorted array. 
  var times = arr.length; // runs the for loop once for each thing in the array 
  var count = 0; 
  for (var i=0;i<times;i++){ 
    if(num>arr[i]){count++;} } // counts how many array numbers are smaller than num 
    return count; // the above equals num's position in a sorted array 
 } 
 
 getIndexToIns([40, 60], 50); 

:rocket: Ejecutar código

Explicación del código:

  • No ordeno la matriz de entrada arr
  • Ejecuto un recuento de bucles for cuando la entrada num es más grande que un número de entrada arr.
  • Este número es equivalente a la posición de num que estaría en una matriz ordenada.

:beginner: Solución de código básico:

por @HarinaPana

function getIndexToIns(arr, num) { 
 
  arr.sort(function(a, b) { 
  return a - b; 
  }); 
 
  var i = 0; 
  while (num > arr[i]) { 
  i++; 
  } 
 
  return i; 
 } 
 
 getIndexToIns([40, 60], 50); 

:rocket: Ejecutar código

Explicación del código:

  • Ordenar la matriz existente.
  • Iterar a través de la matriz mientras se comprueba si num es más grande.
  • El bucle se detendrá cuando num no sea mayor que i y devolverá el último elemento marcado.

:sunflower: Solución de código intermedio:

por @faustodc

function getIndexToIns(arr, num) { 
  arr.push(num); 
  arr.sort(function(a, b){return ab}); 
  return arr.indexOf(num); 
 } 

:rocket: Ejecutar código

Explicación del código:

  • Primero agregamos el número num a la matriz usando push() que lo agrega como el último elemento de la matriz.
  • Luego usamos sort() con la función de function(a, b){return ab} devolución de llamada function(a, b){return ab} para ordenar los números en orden ascendente.
  • Finalmente, devolvemos la posición o el índice de num en la matriz con la función indexOf() .

Enlaces relevantes

:sunflower: Solución de código intermedio:

Utilizando .findIndex()

function getIndexToIns(arr, num) { 
  // sort and find right index 
  var index = arr.sort((curr, next) => curr > next) 
    .findIndex((currNum)=> num <= currNum); 
  // Returns proper answer 
  return index === -1 ? arr.length : index; 
 } 
 
 getIndexToIns([40, 60], 500); 

:rocket: Ejecutar código

Explicación del código:

  • Primero ordene la matriz en orden ascendente, esto se hace actualmente usando funciones de matriz para una huella mínima.
  • Una vez que la matriz está ordenada, aplicamos directamente el .findIndex() donde vamos a comparar cada elemento de la matriz hasta que encontremos donde num <= currNum significa que el número que queremos insertar es menor o igual al número actual Número en la iteración.
  • Luego usamos operaciones ternarias para verificar si obtuvimos un índice devuelto o -1 . Sólo tenemos -1 cuando no se encontró el índice es decir, cuando tenemos una falsa para todos los elementos que int matriz, y para tal caso, eso significaría que num debe insertarse al final de la lista, por tanto, por qué usamos arr.length .

Enlaces relevantes

:rotating_light: Solución avanzada de código:

por @nivrith

function getIndexToIns(arr, num) { 
 
 return arr.concat(num).sort((a,b) => ab).indexOf(num); 
 
 } 
 
 getIndexToIns([1,3,4],2); 

:rocket: Ejecutar código

Explicación del código:

  • Utilizamos el encadenamiento de métodos para invocar un método tras otro para resolver el problema en una sola línea. Primero fusionamos arr y num invocando el método arr.concat (num)
  • Luego usamos sort() con la función de flecha de devolución de llamada (a, b) => return ab para ordenar los números en orden ascendente
  • Por último, devolvemos la posición o el índice de num en la matriz con el método indexOf()

Enlaces relevantes

:clipboard: NOTAS PARA LAS CONTRIBUCIONES:

  • :warning: NO agregue soluciones que sean similares a las soluciones existentes. Si cree que es similar pero mejor , intente fusionar (o reemplazar) la solución similar existente.
  • Agregue una explicación de su solución.
  • Categorice la solución en una de las siguientes categorías: Básica , Intermedia y Avanzada . :traffic_light:
  • Agregue su nombre de usuario solo si ha agregado algún contenido principal relevante . ( :warning: NO elimine ningún nombre de usuario existente )

Ver :point_right: Wiki Challenge Solution Template para referencia.