📌 Решение задачи c собеседования в Microsoft



Описание, условие и объяснение алгоритма решения задачи на 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 —
КЛИК



➡️ Java Developer