https://leetcode.com/problems/maximum-subarray/
- Kadane Algorithm
Use Kadane's algorithm: track current sum (max ending here) and global max. Reset current sum to nums[i] if current sum is negative.
O(n)
O(1)
class Solution {
public int maxSubArray(int[] nums) {
int maxSoFar = nums[0];
int curr = nums[0];
for (int i = 1; i < nums.length; i++) {
curr = Math.max(nums[i], curr + nums[i]);
maxSoFar = Math.max(maxSoFar, curr);
}
return maxSoFar;
}
}