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.

nums 2 7 11 15 objetivo = 9 respuesta 0 1

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!