Maximum Subarray Sum With Length Divisible by K
Medium
Watch on YouTube ↗Solution
class Solution {
public long maxSubarraySum(int[] nums, int k) {
int n = nums.length;
long prefix[] = new long[n+1];
// O(n)
for(int i=1; i<=n; i++) {
prefix[i] = prefix[i-1] + nums[i-1];
}
long ans = Long.MIN_VALUE;
// O(k)
for(int i=0; i<k; i++) {
long sum = 0;
// O(n/k)
for(int j=i; j+k<=n; j+=k) {
long currsum = prefix[j+k] - prefix[j];
sum += currsum;
if(sum < currsum) {
sum = currsum;
}
ans = Math.max(ans, sum);
}
}
return ans;
}
}