// 定义dp:以i结尾的最大子数组和 dp[i] = max(dp[i-1] + nums[i],nums[i])
class Solution {
public int maxSubArray(int[] nums) {
// 1. 不需要特殊处理
// 2. 定义dp
int[] dp = new int[nums.length];
dp[0] = nums[0];
int maxResult = nums[0];
// 3. dp递推
for (int i = 1; i < nums.length; i++) {
dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);
// 4. 记录递推过程中的最大值
maxResult = Math.max(maxResult, dp[i]);
}
return maxResult;
}
}