
// 定义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;
    }
}
                


















