Java:
package blueBridge;
import java.util.*;
import java.math.BigInteger;
import java.util.*;
public class testOne {
/*
* 题目
* 给定一个数组arr,返回子数组的最大累加和
* 例:arr=[1,-2,3,5,-2,6,-1],所有的子数组中[3,5,-2,6]可以累加出最大的12
* */
static int addNum(int[] arr) {
int sumJ=arr[0];
int max=sumJ;
int left=0,right=0; //标志每一个正数子序列的端点
for(int j=1;j<arr.length;j++) {
if(sumJ>=0) { //表示这个子序列暂时还为正数,还有意义,继续累加
sumJ+=arr[j];
}else { //子序列为负,无意义,所以抛弃重新赋值第一个数,设置序列起始点
sumJ=arr[j];
left=j;
}
if(sumJ>max) {
max=sumJ;
right=j;
}
}
return max;
}
public static void main(String[] args) {
int[] arr= {1,-2,3,5,-2,6,-1};
int res=addNum(arr);
System.out.println(res);
}
}