
Описание, условие и объяснение алгоритма решения задачи на YouTube — КЛИК
subarraySum()
— метод для подсчета количества подмассивов в массиве, сумма элементов которых равна заданному числу «k».Основная идея решения заключается в использовании хэш-таблицы (HashMap) для хранения сумм подмассивов и их частоты:
sum
и answer
со значением 0;map
;sum
на nums[i]
(добавляем текущий элемент к текущей сумме);map
ключ (sum - k)
, то есть проверяем, имеется ли уже подмассив с суммой (sum - k)
. Если да, то добавляем значение-частоту этого подмассива к переменной answer
;map
новую пару ключ-значение (sum, map.getOrDefault(sum, 0) + 1)
, где sum
- текущая сумма подмассива, а map.getOrDefault(sum, 0) + 1
— текущая частота для этой суммы в хэш-таблице;answer
, которая будет содержать общее количество подмассивов.Время работы — O(n)
Эта задача на LeetCode — КЛИК