给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和
1.动态规划
class Solution {
public int maxSubArray(int[] nums) {
int pre = 0;
int ans = nums[0];
for(int i=0;i<nums.length;i++){
pre = Math.max(nums[i],pre+nums[i]);
ans = Math.max(ans,pre);
}
return ans;
}
}
pre——以第 i 个数结尾的 [连续子数组的最大和]
ans——最大的pre
2.分治
max(前半段最大,中间最大,后半段最大);