g0901_1000.s0974_subarray_sums_divisible_by_k.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
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