连续子数组的最大和
输入一个整形数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)
public class Offer48 {
public static void main(String[] args) {
int[] arr = {1,-2,3,10,-4,7,2,-5};
System.out.println(new Offer48().findGreatestSumOfSubArray(arr));
}
public int findGreatestSumOfSubArray(int[] arr){
if(arr==null||arr.length==0)return 0;
int sum = 0;
int greatestSum = 0;
for (int i = 0; i < arr.length; i++) {
if(sum<=0)sum=arr[i];
else sum+=arr[i];
if(sum>greatestSum)greatestSum=sum;
}
return greatestSum;
}
}