A decir verdad no sé si exista una traducción literal para "Two Sum", pero bueno, resolvamos esto de una vez por todas con una explicación sencilla, en español y sin dar tanta vuelta a las explicaciones científicas, técnicas o intelectuales porque ya saben que a nosotros los ingenieros nos gusta andar de "pensantes" en todo momento.
Problema (original):
Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.
Example 1:
Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
Problema (traducido por mí):
Dado un arreglo de enteros y un entero designado, obtener las posiciones en el arreglo de los dos números que sumados deben dar como resultado el entero designado.
Es decir que si tienes un arreglo [2, 7, 11, 15] y tu designado es el 9, entonces tus números que sumados dan esa cantidad son el 2 y el 7, los cuales se encuentran en las posiciones [0] y [1] de nuestro arreglo.
Hay que dar por hecho que en todo momento el entero designado tendrá una solución implícita en el arreglo, así que no te preocupes de poner "validaciones" de ningún tipo, solo asegúrate de buscar la respuesta correcta en el menor tiempo posible.
La respuesta entonces sería [0, 1] o [1, 0], finalmente no importa el orden.
Otro ejemplo:
Sermón:
La lógica de esto no es la gran cosa, en realidad es muy sencillo solo colocar un par de ciclos y finalmente encontrarás la respuesta, el verdadero reto es que tu desarrollo sea rápido, preciso y totalmente funcional.
En programación existen 'N' caminos para llegar al mismo destino, igual que en la vida, así que haz tu mejor esfuerzo, en realidad si puedes resolver un problema de una manera, habrás aprendido algo, aunque no sea lo mejor de lo mejor, habrás llegado al resultado esperado y puedes seguir mejorando siempre.
Lógica:
1.- Recorrer todo el arreglo con un ciclo
2.- Comprobar cada número del arreglo sumado con el resto para encontrar la respuesta
3.- Validar que efectivamente encontramos la respuesta
4.- Retornar la respuesta
Programación:
1.- Coloqué un ciclo for que va desde la posición 0 (variable x) hasta la última del arreglo
2.- Dentro de ese ciclo hice otro que comenzará desde una posición adelante de nuestro primer ciclo (variable y = x + 1) y de igual manera terminará hasta la última posición del arreglo.
3.- Ahora sí, dentro del segundo ciclo comencé a validar si la suma del arreglo en la posición 'x' (ARREGLO[x]) y el arreglo en la posición 'y' (ARREGLO[y])
4.- Una vez encontrado el valor, retorno las posiciones 'x' y 'y'
¿Complejo?, no realmente, ¿óptimo?, no realmente, pero sí funcional, hay otras formas de realizar esta búsqueda más rápidamente, utilizando un estructuras de datos más veloces, pero para aprender eso primero tienes que pasar por esto, y practicar hasta mejorar tanto que tú mismo puedas criticar tu propio código.
Resultado:
¡DESCARGA FAST!
Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste