Así que estoy haciendo un curso sobre algoritmos para prepararme para las entrevistas y algo sucedió y ahora estoy realmente confundido acerca de lo que sucede detrás de escena con este problema. El problema es bastante fácil, solo necesita verificar los mismos elementos en dos matrices. Sin embargo, no puede usar bucles anidados porque necesita tener un tiempo de ejecución más rápido que 1000 ms. ¡Aquí está mi código a continuación y funcionó al primer intento!
const intersection = (a, b) => { count = {} answer = []; for(let i = 0; i < a.length; i++){ const num = a[i] count[num] += 1; } for(arrb of b){ if(arrb in count){ answer.push(arrb) } } return answer };Así que pasé la prueba y me alegré de haberlo obtenido fácilmente, luego me di cuenta de que tenía un error tipográfico al establecer el conteo. Tenía la intención de contar [num] = 1 NO += Sin embargo, después de probarlo nuevamente con = mi código siguió fallando en la prueba debido a los tiempos de respuesta de más de 2000 ms en la prueba final (que es)
const a = []; const b = []; for (let i = 0; i < 50000; i += 1) { a.push(i); b.push(i); } intersection(a, b) // -> [0,1,2,3,..., 49999]Así que estoy realmente confundido por qué funciona perfectamente cuando hay un += pero no un = normal, ya que hacer += solo devuelve un objeto con los valores establecidos en NAN.