620. Maximum Subarray IV
class Solution {
public:
/**
* @param nums: an array of integer
* @param k: an integer
* @return: the largest sum
*/
int maxSubarray4(vector<int> &nums, int k) {
// write your code here
const int size = nums.size();
if(size < k){
return 0;
}
vector<int> prefixSum(size + 1, 0);
vector<int> prefixSumMin(size + 1, 0);
for(int i = 0; i < size; i++){
prefixSum[i + 1] = prefixSum[i] + nums[i];
prefixSumMin[i + 1] = min(prefixSum[i + 1], prefixSumMin[i]);
}
int res = INT_MIN;
for(int i = k - 1; i < size; i++){
res = max(res, prefixSum[i + 1] - prefixSumMin[i - k + 1]);
}
return res;
}
};
Comments
Post a Comment