Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

180
Vistas
LeetCode two sum no funciona como se esperaba con un gráfico hash

Estoy tratando de encontrar una solución eficiente para la función de dos sumas en leetCode. Por lo que entiendo, este código DEBERÍA funcionar, pero sigue volviendo indefinido

 var twoSum = function(nums, target) { let hashGraph = {} let slow = 0 let fast = nums.length - 1 while(slow < Math.abs(nums.length / 2)) { if(nums[slow] + nums[fast] == target) { return [slow, fast] } else if(!hashGraph[target - nums[slow]] === undefined) { let answer = [slow, hashGraph[target - nums[slow]]].sort() return answer } else if(!hashGraph[target - nums[fast]] === undefined) { return [hashGraph[target - nums[fast]], fast].sort() } else { hashGraph[nums[slow]] = slow hashGraph[nums[fast]] = fast slow++ fast-- } } };

esencialmente estoy almacenando los valores en cada índice dentro de un gráfico hash y asignando los valores en esa ubicación al índice en el que se encontró el número. Cuando itero, verifico si el complemento para el número en el índice actual existe en la tabla hash. Si es así, devuelvo el índice actual y el valor del índice encontrado (que es el valor en la matriz en la que se descubrió el número)

Para el primer caso de prueba, se me da la matriz [2,7,11,15] y un objetivo de 9. Lo que DEBERÍA suceder aquí es que el caso else del bucle while sea alcanzado y el gráfico se complete de la siguiente manera: { 2: 0, 15: 3}

Luego, en la segunda iteración, se cumple la segunda condición donde se verifica si hashGraph[target - nums[slow]] es válido. Dado el objetivo de 9 y la entrada de 7, básicamente estoy preguntando si existe hashGraph[9-2] o hashGraph[2]. De hecho, lo hace, sin embargo, al visualizar la ejecución con el visualizador de ejecución de Javascript de python tutor, falla esta verificación y llega a la cláusula else.

Esto es lo que me está desconcertando. hashGraph[2] existe. Puedo replicar lo mismo y obtener el resultado correcto si uso lo siguiente:

 let hash = { 2: 0, 15: 3 } let arr = [7] console.log(hash[9 - arr[0]])

Si ese código me da el resultado correcto, ¿por qué falla mi condición if?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda