var twoSum = function (nums, target) {
const hash = {};
for (let i = 0; i < nums.length; i++) {
const val = target - nums[i];
if (val in hash) {
return [hash[val], i];
} else {
hash[nums[i]] = i;
}
}
};
- Создаем хэш-мапу
- Проходимся по массиву nums
- Для каждого элемента проверяем, есть ли в hashMap такое число, которое в сумме с текущим элементом даст target
- Если да -- вернуть индексы текущего элемента и элемента из hashMap
- Если нет -- то добавим элемент в hashMap
- Если все элементы пройдены, то вернуть пустой массив, так как пара чисел не найдена
Этот алгоритм работает за линейное время O(n)
, где n
- количество элементов во входном массиве nums.