Skip to content
Rain Hu's Workspace
Go back

[LeetCode] 974. Subarray Sums Divisible by K

Rain Hu

974. Subarray Sums Divisible by K


一、題目

Given an integer array nums and an integer k, return the number of non-empty subarrays that have a sum divisible by k.
A subarray is a contiguous part of an array.

Example 1:

Example 2:

Constraints:


二、分析

三、解題

1. prefix sum

int subarraysDivByK(vector<int>& nums, int k) {
    // vector<int> prefix = {0};
    int sum = 0;
    int res = 0;
    unordered_map<int,int> map;
    map[0] = 1;
    for (const auto& x : nums) {
        sum += x;
        int val = sum % k;
        if (val < 0) val += k;
        // prefix.push_back(val);
        if (map.count(val)) res += map[val];
        map[val]++;
    }
    return res;
}

回目錄 Catalog


Share this post on:

Previous
[IT] C# Depth Ch.2 C# 2
Next
[LeetCode] 53. Maximum Subarray