求最大子序列和:
分析:
- 1.子序列:
给定一个数组,它的子序列有:
- 2.和:
负数
0
正数
- 3.子序列是否连续
可以分为两种情况:(1)在所有子序列中求子序列和最大的 (2) 多个子序列之和最大
所以:
情况(1):
经过分析可以看出,和最小是0,即子序列为空的时候,只要遍历数组相加,比较和为正数且最大的,即为所求。
情况(2):
遍历所有子序列,将子序列和为正数的相加,最终结果即为所求。
情况(1)代码:
时间复杂度:O(n)
public static int getMaxSum(int[] data){
int maxSum =0;
int sum = 0;
if(data==null||data.length==0){
return 0;
}
for (int a :data){
sum = sum+a;
if(sum>maxSum){
maxSum = sum;
}
if(sum<0){
sum =0;
}
}
return maxSum;
}