题目描述
数组{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)
牛客传送门:点击打开链接
思路:设置一个最大值result、一个当前值的和curSum。从头开始遍历数组,当curSum小于等于0时,让curSum等于当前值, 每次遍历都和result比较,如果curSum大于result,更新result。
public class Title31 {
public int FindGreatestSumOfSubArray(int[] array) {
if(array == null || array.length == 0)
return 0;
int result = 0x80000000;
int curSum = 0;
for(int i=0;i<array.length;i++){
if(i == 0 || curSum <= 0){
curSum = array[i];
}else{
curSum += array[i];
}
if(result < curSum)
result = curSum;
}
return result;
}
public static void main(String[] args) {
int[] array = {6,-3,-2,7,-15,1,2,2};
System.out.println(new Title31().FindGreatestSumOfSubArray(array));
}
}