Написано: 19.03.2023

560. Сумма подмассива, равная K (Subarray Sum Equals K)

medium

Задание.

Дан массив целых чисел nums и целое число k

Верните общее количество подмассивов, сумма которых равна k.

Подмассив – это непрерывная непустая последовательность элементов внутри массива.

Пример 1.

Входные данные: nums = [1,1,1], k = 2

Результат: 2

Пример 2.

Входные данные: nums = [1,2,3], k = 3

Результат: 2

Решение.

class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        unordered_map<int,int>mp;
        int ans = 0, sum = 0, len = nums.size();
        mp[0] = 1;
        for(int i = 0; i < len; i++) {
            sum += nums[i];
            ans += mp[sum - k];
            mp[sum]++;
        }
        return ans;
    }
};

Способ решения.