题目连接 https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof
方法一: 暴力法求解
class Solution {
public int maxSubArray(int[] arr) {
int maxSum = Integer.MIN_VALUE;
for (int i = 0; i < arr.length; i++) {
for (int j = i; j < arr.length; j++) {
int tmpMax = 0;
for (int k = i; k <= j; k++) {
tmpMax+=arr[k];
}
maxSum=tmpMax>maxSum?tmpMax:maxSum;
}
}
return maxSum;
}
}
时间复杂度:o(n3)
空间复杂度 o(1)
方法二:把当前子序列和保存在数组当前元素中
public int maxSubArray(int[] nums) {
int res = nums[0];
for(int i=1;i<nums.length;i++){
//把当前子序列和保存在当前位置 如果计算发现比0小,则从0开始计算
nums[i] +=Math.max(nums[i-1],0);
//这里为什么要和当前值比较?因为ret要始终保存当前最大。
res = Math.max(nums[i],res);
}
return res;
}
时间复杂度 o(n)
空间复杂度 o(1)
参考https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/solution/mian-shi-ti-42-lian-xu-zi-shu-zu-de-zui-da-he-do-2/