输入一个整型数组,数组里有整数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为on
public static int maxSubArr(int[] arr){
int max=arr[0];
int[] sum=new int[arr.length];
sum[0]=arr[0];
for(int i=1;i<arr.length;i++){
if(sum[i-1]>0){
sum[i]=arr[i]+sum[i-1];
}
else{
sum[i]=arr[i];
}
if(sum[i]>max){
max=sum[i];
}
}
return max;
}