Это моя вторая публикация о решении одной из задач программирования 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. Спасибо за чтение!