给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

    分析:还是先弄明白dp的三个环节
    dp[i]指什么?dp[i]指包含i在内的最大子序和为i
    如何得到?dp[i]=Math.max(dp[i-1]+nums[i],nums[i]),即看要不要之前的元素呗
    初值?设一下第一个dp数值为nums[0]就行了
    同时还要注意,dp是包含i在内的,而我们要求的不一定包含i,即我们要在所有dp数组中找到最大的,那么还要维护一个max
    的值,来求do数组的最大值。

    参考代码:
    public int maxSubArray(int[] nums) {
    int[] dp = new int[nums.length];
    dp[0]=nums[0];
    int ret = nums[0];
    for(int i=1;i dp[i]=Math.max(dp[i-1]+nums[i],nums[i]);
    ret=Math.max(ret,dp[i]);
    }
    return ret;
    }