image.png可以用动态规划来做,到第 i 个点的最大子序和设置为 dp[i], 那么不难得出:

    dp[0] = nums[0] dp[i] = max(dp[i-1]+nums[i],nums[i]) ( i >= 1)**

    得到第 i 个点的最大子序和后,与当前存储的最大子序和作比较,如果大于,那么就更新存储的最大子序和。

    代码:**

    1. class Solution {
    2. public int maxSubArray(int[] nums) {
    3. int []dp = new int[nums.length];
    4. dp[0] = nums[0];
    5. int maxAns = dp[0];
    6. for(int i = 1;i < nums.length;i++){
    7. dp[i] = Math.max(dp[i-1]+nums[i],nums[i]);
    8. if(dp[i] > maxAns){
    9. maxAns = dp[i];
    10. }
    11. }
    12. return maxAns;
    13. }
    14. }