Lectura
Dos Sumas (Java, Python, PHP, C++, JavaScript)
Este es el ejercicio mas famoso de la plataforma de LeetCode, y dice que:
Dado un array de números enteros y un objetivo entero, devuelva índices de los dos números de manera que sumen el objetivo.
Se asume que cada ejercicio tendría exactamente una solución y no se puede utilizar el mismo elemento dos veces.
Puede devolver la respuesta en cualquier orden.
Explicación del ejercicio Paso por paso
Código de la solución
Java
class Solution {
public int[] twoSum(int[] nums, int target) {
Map map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complemento = target - nums[i];
if (map.containsKey(complemento)) {
return new int[] { map.get(complemento), i };
}
map.put(nums[i], i);
}
return new int[] {};
}
}
Python
class Solution(object):
def twoSum(self, nums, target):
mapa = {}
for i, num in enumerate(nums):
complemento = target - num
if complemento in mapa:
return [mapa[complemento], i]
mapa[num] = i
return []
PHP
class Solution {
/**
* @param Integer[] $nums
* @param Integer $target
* @return Integer[]
*/
function twoSum($nums, $target) {
$mapa = [];
foreach ($nums as $i => $num) {
$complemento = $target - $num;
if (array_key_exists($complemento, $mapa)) {
return [$mapa[$complemento], $i];
}
$mapa[$num] = $i;
}
return [];
}
}
C++
class Solution {
public:
vector twoSum(vector& nums, int target) {
unordered_map mapa;
for (int i = 0; i < nums.size(); i++) {
int complemento = target - nums[i];
if (mapa.find(complemento) != mapa.end()) {
return {mapa[complemento], i};
}
mapa[nums[i]] = i;
}
return {};
}
};
JavaScript
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
const mapa = new Map();
for (let i = 0; i < nums.length; i++) {
const complemento = target - nums[i];
if (mapa.has(complemento)) {
return [mapa.get(complemento), i];
}
mapa.set(nums[i], i);
}
return [];
};
Si te gustó el contenido, ¡visita mi canal de YouTube para ver más explicaciones sobre algoritmos y estructuras de datos!