Это моя вторая публикация о решении одной из задач программирования LeetCode под названием Две суммы.



Задача проста: «По заданному массиву целых чисел вернуть индексы двух чисел так, чтобы они в сумме давали определенную цель. Вы можете предположить, что каждый вход будет иметь ровно одно решение, и вы не можете использовать один и тот же элемент дважды».

Пример:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

Идея

  • Нам нужна структура данных, содержащая {Number -> index}
  • Если бы существовали такие два числа, где num1 + num2 = target, то у нас также было бы num2 = target — num1

Псевдокод

class Solution {
    public int[] twoSum(int[] nums, int target) {
        // 1. initialize HashMap for {Number -> Index}
        // 2. iterate the array
        // 3. check if such 'num2' exists in the hashmap
            
        // 4. if not exist, add new pair to the hashmap
    }
}

Код

Обратите внимание, что вы можете вернуть результат как return new int[]{i, map.get(nums2)

Очень простой вопрос с использованием HashMap. Спасибо за чтение!