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

343
Visualizações
Encuentre el entero impar (fundamentos js) - lógica

La tarea Dada una serie de números enteros, encuentra el que aparece un número impar de veces.

Siempre habrá un solo número entero que aparecerá un número impar de veces.

Los ejemplos [0,1,0,1,0] deberían devolver 0, porque ocurre 3 veces (lo cual es impar). [1,2,2,3,3,3,4,3,3,3,2,2,1] debería devolver 4, porque aparece 1 vez (lo cual es impar).

Vi esta solución, pero me cuesta entender la lógica de por qué funciona:

p.ej

 function findOdd(arr) { return arr.find((item) => arr.filter(el => el == item).length % 2) } console.log(findOdd([20,1,-1,2,-2,3,3,5,5,1,2,4,20,4,-1,-2,5])) // returns 5

Si el número debe ser impar, ¿por qué no lo es? ... .length % 2 !== 0 ; ¡Realmente agradecería cualquier ayuda! Gracias :)

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

arr.filter(el => el == item).length % 2 devuelve 0 o 1. Esto es lo suficientemente bueno, ya que ese valor será forzado a booleano, y dado que 0 es falso y 1 verdadero, tiene el efecto deseado.

Tenga en cuenta que este algoritmo tiene una complejidad O(n²). Es posible hacer esto de manera más eficiente.

 function findOdd(arr) { return arr.reduce((a, b) => a ^ b); } console.log(findOdd([20,1,-1,2,-2,3,3,5,5,1,2,4,20,4,-1,-2,5])) // returns 5

Esto usa XOR. Todos los valores en la matriz son XOR juntos. Se basa en la consideración de que a ^ a == 0 para cualquier valor de a . Y a ^ 0 == a . Entonces, si tenemos un número impar de a , obtendremos a , de lo contrario 0. Como solo hay un número cuya ocurrencia es impar, lo encontraremos de esta manera. El caso especial de 0 también funcionará.

about 4 years ago · Juan Pablo Isaza Relatório

0

Porque el filtro devuelve una matriz que contiene elementos que satisfacen la condición. Devuelve elementos filtrados, no los "filtra".

about 4 years ago · Juan Pablo Isaza Relatório

0

Esta es una solución rápida y eficiente.

  1. arr.find((item)=>{} esto recorrerá cada elemento de la matriz y devolverá el primer valor satisfecho donde devolvemos verdadero;

  2. arr.filter(el => el == item) esto volverá a recorrer la misma matriz y devolverá una matriz de elementos duplicados ejemplo if arr = [1,1,2,1,3] luego arr.filter(el => el == 1) devolverá [1,1,1] ;

  3. arr.filter(el => el == item).length % 2 esto devolverá el recordatorio de la matriz de resultados de elementos duplicados divididos por 2, que debería ser 0 o 1

  4. Para javascript 0 == false y 1 == true ; entonces, cuando el bucle de búsqueda encuentre un 1 del filtro, devolverá el valor;

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