
参考了答案。。。。。。
思路:动态规划,dp[i]表示以索引i结尾的最大子数组和,那么如果dp[i-1]>0 dp[i]=dp[i]+nums[i] 如果dp[i-1]<0 dp[i]=nums[i] ,最后dp数组中的最大值即为答案
code:
class Solution {
public int maxSubArray(int[] nums) {
int dp[]=new int[nums.length];
dp[0]=nums[0];
for(int i=1;i<nums.length;i++){
if(dp[i-1]>0){
dp[i]=dp[i-1]+nums[i];
}else{
dp[i]=nums[i];
}
}
Arrays.sort(dp);
return dp[dp.length-1];
}
}
原文链接: https://blog.csdn.net/qq_53568730/article/details/136781177