最大子序列和
题目描述
题目:求给定数组中的最大连续子序列和
示例 :[1,3,-2,4 ,-5]
输出:6
解法一:暴力法(超时)
两层循环暴力求解
public int solution1(int[] nums){
int ans = nums[0];
for (int i = 0; i < nums.length; i++) {
int sum = 0;
for (int j = i; j <nums.length ; j++) {
sum+=nums[j];
if (sum>ans){
ans = sum;
}
}
}
return ans;
}
解法二:分治法
思路:最大和子序列出现在一下三种情况:
- 子序列出现在数组的左边
- 子序列出现在数组的右边
- 子序列出现在中间
根据这三种情况进行分治,每个子任务求出对应区间中左右两种情况的最大值返回与第三种情况进行比较
public int solution2(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
} else {
return digui(0 , nums.length-1 , nums