Leetcode
Dynamic Programming
53 Maximum Subarray

1. Question

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array[-2,1,-3,4,-1,2,1,-5,4], the contiguous subarray[4,-1,2,1]has the largest sum =6.

2. Implementation

(1) DP (Kadane Algorithm)
1
class Solution {
2
public int maxSubArray(int[] nums) {
3
int max = nums[0];
4
int sum = nums[0];
5
6
for (int i = 1; i < nums.length; i++) {
7
sum = sum >= 0 ? sum + nums[i] : nums[i];
8
max = Math.max(max, sum);
9
}
10
return max;
11
}
12
}
Copied!

3. Time & Space Complexity

DP (Kadane Algorithm): 时间复杂度O(n), 空间复杂度O(1)