Maximum Sum Subarray (Kadane's Algorithm)
Find the contiguous subarray with the largest sum.
Example 1
Input: nums=[-2,1,-3,4,-1,2,1,-5,4] → Output: 6. Subarray [4,-1,2,1] has sum 6.
Example 2
Input: nums=[1] → Output: 1
Solution Approach
Kadane's algorithm: track current sum and global max.
- Initialize curSum = nums[0], maxSum = nums[0]
- For each next element: curSum = max(num, curSum+num)
- Update maxSum = max(maxSum, curSum)
- Return maxSum
Java
public int maxSubArray(int[] nums) {
int curSum = nums[0], maxSum = nums[0];
for (int i = 1; i < nums.length; i++) {
curSum = Math.max(nums[i], curSum + nums[i]);
maxSum = Math.max(maxSum, curSum);
}
return maxSum;
}
- Time Complexity: O(n)
- Space Complexity: O(1)