例如输入的数组为1, -2, 3, -10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。
public class Test5_1 {
public static void main(String[] args) {
int[] arr= new int[]{1,-2,3,10,-4,7,2,-5};
int i=getGreatSum(arr);
System.out.println(i);
}
public static int getGreatSum(int[] arr){
if(arr==null||arr.length==0){
return 0;
}
int maxSum=0;
int temp=0;
for (int i=0;i< arr.length;i++){
temp += arr[i];
if(temp<0){
temp=0;
}
if(temp>maxSum){
maxSum=temp;
}
}
if(maxSum==0){
maxSum=arr[0];
for (int i=1;i<arr.length;i++){
if(arr[i]>maxSum) maxSum=arr[i];
}
}
return maxSum;
}
}