Given an integer arrays, find a contiguous subarray which has the largest sum and length should be greater or equal to given length
Return the largest sum, return 0 if there are fewer than k elements in the array.
k
.Return the largest sum, return 0 if there are fewer than k elements in the array.
Example
Example 1:
Input:
[-2,2,-3,4,-1,2,1,-5,3]
5
Output:
5
Explanation:
[2,-3,4,-1,2,1]
sum=5
Example 2:
Input:
[5,-10,4]
2
Output:
-1
Notice
- Ensure that the result is an integer type.
k
>0
public class Solution { /** * @param nums: an array of integer * @param k: an integer * @return: the largest sum */ public int maxSubarray4(int[] nums, int k) { // write your code here if (nums == null || nums.length < k) { return 0; } int[] minPresum = new int[nums.length + 1]; int sum = 0; int maxSum = Integer.MIN_VALUE; for (int i = 1; i <= nums.length; i++) { sum += nums[i - 1]; minPresum[i] = Math.min(minPresum[i - 1], sum); if (i >= k) { maxSum = Math.max(maxSum, sum - minPresum[i - k]); } } return maxSum; } }
No comments:
Post a Comment