题目描述
{6, -3, -2, 7, -15, 1, 2, 2},连续子数组的最大和为 8(从第 0 个开始,到第 3 个为止)。
public class Solution {
public int FindGreatestSumOfSubArray(int[] array) {
int max=Integer.MIN_VALUE;
for(int i=0;i<array.length;i++){
int temp=array[i];
if(temp>max){
max=temp;
}
for(int j=i+1;j<array.length;j++){
temp+=array[j];
if(temp>max){
max=temp;
}
}
}
return max;
}
}
优化 降低时间复杂度
public class Solution {
public int FindGreatestSumOfSubArray(int[] array) {
if (array == null || array.length == 0) {
return 0;
}
int max = Integer.MIN_VALUE;
int sum = 0;
for (int a : array) {
sum = sum <= 0 ? a : sum + a;
max = Math.max(sum, max);
}
return max;
}
}