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

189
Visualizações
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 à 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