题目描述
给定一个数组arr,返回子数组的最大累加和
例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.
题目保证没有全为负数的数据
[要求]
时间复杂度为O(n),空间复杂度为O(1)
示例
输入:
[1, -2, 3, 5, -2, 6, -1]
返回:
12
代码
public int maxsumofSubarray (int[] arr) {
// write code here
int[] arr1 = new int[arr.length+1];
int max = Integer.MIN_VALUE;
for(int i=0;i<arr.length;i++){
arr1[i+1] = arr[i]+arr1[i];
if(arr1[i+1]<0){
arr1[i+1] = 0;
}
max = Math.max(arr1[i+1],max);
}
return max;
}