Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

365
Views
6kyu_Par de guantes_CodeWards_i++

problema de la guerra de códigos

Mi solución a este problema:

 function numberOfPairs(gloves) { const glove = gloves.slice().sort(); const pairs = []; for (let i = 0; i < glove.length - 1; i++) { if (glove[i] == glove[i+1]) { pairs.push(glove[i]); } } return pairs.length; }

Pasó la prueba inicial pero falló el intento/prueba aleatoria. 2da prueba

Mi segunda solución, agrego i++. Pasa el Intento

 function numberOfPairs(gloves) { const glove = gloves.slice().sort(); const pairs = []; for (let i = 0; i < glove.length - 1; i++) { if (glove[i] == glove[i+1]) { pairs.push(glove[i]); i++ // How? } } return pairs.length; }

¿Pueden ayudarme? ¿Cómo i ++ soluciona el problema?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

También puede agrupar los colores y luego contar los pares usando Array.prototype.reduce .

 function solution(input) { return input.reduce( ([pairs, hash], clr) => { hash[clr] = (hash[clr] ?? 0) + 1; return [pairs + (hash[clr] % 2 === 0 ? 1 : 0), hash]; }, [0, {}] )[0]; } console.log(solution(["red", "green", "red", "blue", "blue"])); console.log(solution(["red", "red", "red", "red", "red", "red"]));

about 4 years ago · Juan Pablo Isaza Report

0

Porque si encontró un par, el siguiente elemento es igual al real y está avanzando solo un elemento en la matriz a la vez. Si encontró un par, el siguiente elemento fue el que encontró, luego debe avanzar otra posición en la matriz cuando lo encontró.

Digamos que tienes esta matriz: [1, 2, 5, 8, 9, 2, 8] Numeremos las líneas para hacerlo más fácil:

 1 function numberOfPairs(gloves) { 2 const glove = gloves.slice().sort(); 3 const pairs = []; 4 for (let i = 0; i < glove.length - 1; i++) { 5 if (glove[i] == glove[i+1]) { 6 pairs.push(glove[i]); 7 i++ // How? 8 } 9 } 10 return pairs.length; 11 }

después de la línea 2, tendrá la siguiente matriz ordenada:

 [1, 2, 2, 5, 8, 8, 9]

con 2 pares en ella. Luego, comenzará la iteración de la matriz con i = 0, por lo que en la línea 6 en la primera iteración, el guante [i] es 1 y el guante [i + 1] es 2. Diferente, por lo que for continúa a i = 1.

Ahora el if en la línea 6 prueba guante[i] con i = 1 haciendo guante[i] = 2 y guante[i+1] también = 2 (primer par). Entonces ingresa el si y empuja el primer número a pares: 2.

Ahora bien, si i++ no está presente en la línea 7, lo que sucedería es que for continuaría con i = 2 haciendo guante[i] = 2 y guante[i + 1] = 5. Pero el 2 forma parte del primer par encontrado . Así que esto es incorrecto. Debemos omitir el segundo 2, para eso está i++, la línea 7 está ahí. Sería aún peor si el cuarto elemento en la matriz fuera 2 nuevamente porque informaría a otro par cuando solo hay uno.

Después de esto, for continuará no a i=2 sino correctamente a i=3 probando los elementos 5 y 8 para el siguiente par.

Espero que esto explique lo suficientemente claro.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!