Talentd
FleetCode

2607. Make K-Subarray Sums Equal

Medium38.9% acceptance2 companies

You are given a 0-indexed integer array arr and an integer k. The array arr is circular. In other words, the first element of the array is the next element of the last element, and the last element of the array is the previous element of the first element.

You can do the following operation any number of times:

  • Pick any element from arr and increase or decrease it by 1.

Return the minimum number of operations such that the sum of each subarray of length k is equal.

A subarray is a contiguous part of the array.

Example 1:

Input: arr = [1,4,1,3], k = 2
Output: 1
Explanation: we can do one operation on index 1 to make its value equal to 3.
The array after the operation is [1,3,1,3]
- Subarray starts at index 0 is [1, 3], and its sum is 4 
- Subarray starts at index 1 is [3, 1], and its sum is 4 
- Subarray starts at index 2 is [1, 3], and its sum is 4 
- Subarray starts at index 3 is [3, 1], and its sum is 4 

Example 2:

Input: arr = [2,5,5,7], k = 3
Output: 5
Explanation: we can do three operations on index 0 to make its value equal to 5 and two operations on index 3 to make its value equal to 5.
The array after the operations is [5,5,5,5]
- Subarray starts at index 0 is [5, 5, 5], and its sum is 15
- Subarray starts at index 1 is [5, 5, 5], and its sum is 15
- Subarray starts at index 2 is [5, 5, 5], and its sum is 15
- Subarray starts at index 3 is [5, 5, 5], and its sum is 15 

Constraints:

  • 1 <= k <= arr.length <= 105
  • 1 <= arr[i] <= 109

Asked at 2 companies

Hints open one at a time

Hint 1
Think about gcd(n, k). How will it help to calculate the answer?
Hint 2
indices i and j are in the same group if gcd(n, k) mod i = gcd(n, k) mod j. Each group should have equal elements. Think about the minimum number of operations for each group
Hint 3
The minimum number of operations for each group equals the summation of differences between the elements and the median of elements inside the group.
29:35
Still stuck?Read 3 approaches, or watch a walkthrough.
Open solution

Similar problems

Rotate ArrayMedium
Loading editor…
1class Solution:
2 def makeSubKSumEqual(self, arr: List[int], k: int) -> int:
3
Starter codePython 3Spaces: 4
Examples
Input
[1,4,1,3]
2
Input
[2,5,5,7]
3
Your code is saved on this device.Solution