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

139
Visualizações
Elimine todos los elementos de una matriz A que están presentes en una matriz B sin usar un bucle doble

Entonces, como entrada tengo dos arreglos, A y B. Supongamos que estos son los valores dentro de los dos:

A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y B = [1, 3, 5, 7, 9]

Después de la eliminación, la matriz A debería ser [2, 4, 6, 8, 10].

He escrito (Javascript) este algoritmo de funcionamiento para resolver este problema:

 for (var i=0; i < A.length; i++) { for (var j=0; j < B.length; j++) { if(B[j] == A[i]) A.splice(i, 1) // Removes 1 element of the array starting from position i } }

Me gustaría saber, ¿es posible resolver este problema sin usar un doble bucle?

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

0

¿Qué pasa con esto?

 let A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ; const B = [1, 3, 5, 7, 9]; A = A.filter(num => !B.includes(num));
about 4 years ago · Juan Pablo Isaza Relatório

0

Sí, lo es. Podrías usar un Set . En términos de operaciones de conjunto, está calculando la diferencia A \ B .

El uso de un conjunto que está optimizado para búsquedas en tiempo O(1) acelerará significativamente el cálculo de la diferencia de O(n²) cuando se usa include includes() o double for loop to O(n) .

 const A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] const B = [1, 3, 5, 7, 9] const setB = new Set(B); const difference = A.filter(x => !setB.has(x)); console.log(difference);

about 4 years ago · Juan Pablo Isaza Relatório

0

Tal vez eso ?

 const A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] , B = [1, 2, 3, 5, 7, 9] // no gaps in 1,2 and 2,3 ; for (let i =0, j=0 ; i < A.length; i++) { if (A[i]===B[j]) { A.splice(i--,1); j++ } } document.write( JSON.stringify(A) )

o (código más rápido)

 const A = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] , B = [ 1, 3, 5, 7, 9 ] ; for (let i = A.length, j= B.length -1 ; i-- ; ) { if (A[i]===B[j]) { A.splice(i,1); j-- } } document.write( JSON.stringify(A) )

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