暴力搜索的方法时间复杂度为O(n^2),采用动态规划,思路:dp[i]为以nums[i]结尾的子数组的最大和,若dp[i-1]小于0,则dp[i]+dp[i-1]反而减小,故当dp[i-1]小于0时,dp[i]=nums[i],总体代码如下:
class Solution {
public int maxSubArray(int[] nums) {
int maxVal=nums[0];
for(int i=1;i<nums.length;i++){
nums[i]=nums[i-1]>0?nums[i]+nums[i-1]:nums[i];
if(nums[i]>maxVal) maxVal=nums[i];
}
return maxVal;
}
}