All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0901_1000.s0974_subarray_sums_divisible_by_k.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0901_1000.s0974_subarray_sums_divisible_by_k;

// #Medium #Array #Hash_Table #Prefix_Sum #2022_03_31_Time_3_ms_(99.95%)_Space_46.1_MB_(95.83%)

/**
 * 974 - Subarray Sums Divisible by K\.
 *
 * Medium
 *
 * 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:**
 *
 * **Input:** nums = [4,5,0,-2,-3,1], k = 5
 *
 * **Output:** 7
 *
 * **Explanation:**
 *
 * There are 7 subarrays with a sum divisible by k = 5:
 *
 * [4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]
 *
 * **Example 2:**
 *
 * **Input:** nums = [5], k = 9
 *
 * **Output:** 0
 *
 * **Constraints:**
 *
 * *   1 <= nums.length <= 3 * 104
 * *   -104 <= nums[i] <= 104
 * *   2 <= k <= 104
**/
public class Solution {
    public int subarraysDivByK(int[] nums, int k) {
        int[] map = new int[k];
        int ans = 0;
        int sum = 0;
        map[0] = 1;
        for (int num : nums) {
            sum += num;
            int temp = sum % k;
            if (temp < 0) {
                temp += k;
            }
            ans += map[temp]++;
        }
        return ans;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy