Maximum Subarray IV
Description
Analysis
Solution
public class Solution {
/**
* @param nums an array of integers
* @param k an integer
* @return the largest sum
*/
public int maxSubarray4(int[] nums, int k) {
int n = nums.length;
if (n < k) return 0;
int maxSum = 0;
for (int i = 0; i < k; i++){
maxSum += nums[i];
}
int[] sum = new int[n + 1];
sum[0] = 0;
int minPrefix = 0;
for (int i = 1; i <= n; i++) {
sum[i] = sum[i - 1] + nums[i - 1];
if (i >= k) {
minPrefix = Math.min(minPrefix, sum[i - k]);
maxSum = Math.max(maxSum, sum[i] - minPrefix);
}
}
return maxSum;
}
}Reference
Last updated