Две суммы

Хеш-карты

Проблема:

Дан массив целых чисел nums и целое число target. Найдите в массиве два числа, сумма которых равна target. Возвращает индексы двух чисел в массиве.

Решение:

Одним из решений этой проблемы является использование хеш-карты. Создайте хеш-карту, которая сопоставляет каждое целое число в массиве с его индексом. Затем выполните итерацию по массиву и для каждого числа проверьте, содержит ли хэш-карта число target - nums[i]. Если да, то два числа, которые в сумме дают target, — это nums[i] и target - nums[i]. Индексы этих двух чисел можно получить из хэш-карты.

Вот код этого решения на JavaScript:

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    let hashMap =  new Map();

    for(let i = 0; i < nums.length; i++){
        let remaining = target - nums[i];

        if(hashMap.has(remaining)){
            return [i, hashMap.get(remaining)];
        }
        hashMap.set(nums[i], i);
    }

};

Примеры тестовых случаев:

  • Ввод: nums = [2, 7, 11, 15], target = 9
  • Выход: [0, 1]
  • Пояснение: Два числа, сумма которых дает 9, — это 2 и 7, которые имеют индексы 0 и 1 в массиве.
  • Ввод: nums = [3, 2, 4], target = 6
  • Выход: [1, 2]
  • Пояснение: Два числа, сумма которых дает 6, — это 2 и 4, которые имеют индексы 1 и 2 в массиве.

Я надеюсь, что этот пост в блоге был полезен!