可以用动态规划来做,到第 i 个点的最大子序和设置为 dp[i], 那么不难得出:
dp[0] = nums[0] dp[i] = max(dp[i-1]+nums[i],nums[i]) ( i >= 1)**
得到第 i 个点的最大子序和后,与当前存储的最大子序和作比较,如果大于,那么就更新存储的最大子序和。
代码:**
class Solution {
public int maxSubArray(int[] nums) {
int []dp = new int[nums.length];
dp[0] = nums[0];
int maxAns = dp[0];
for(int i = 1;i < nums.length;i++){
dp[i] = Math.max(dp[i-1]+nums[i],nums[i]);
if(dp[i] > maxAns){
maxAns = dp[i];
}
}
return maxAns;
}
}