
Две суммы
Хеш-карты
Проблема:
Дан массив целых чисел 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 в массиве.
Я надеюсь, что этот пост в блоге был полезен!