DEV Community

Cover image for 974. Subarray Sums Divisible by K
MD ARIFUL HAQUE
MD ARIFUL HAQUE

Posted on

974. Subarray Sums Divisible by K

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:

  • 4
  • -104 <= nums[i] <= 104
  • 2 <= k <= 104

Constraints:

class Solution {

    /**
     * @param Integer[] $nums
     * @param Integer $k
     * @return Integer
     */
    function subarraysDivByK($nums, $k) {
        $n = count($nums);
        $prefixMod = 0;
        $result = 0;
        $modGroups = array_fill(0, $k, 0);
        $modGroups[0] = 1;        
        foreach ($nums as $num) {
            $prefixMod = ($prefixMod + $num % $k + $k) % $k;
            $result += $modGroups[$prefixMod];
            $modGroups[$prefixMod]++;
        }        
        return $result;
    }
}
Enter fullscreen mode Exit fullscreen mode

Contact Links

Top comments (0)