描述
给定一个数组arr,返回子数组的最大累加和
例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.
题目保证没有全为负数的数据
[要求]
时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)
示例1
输入:
[1, -2, 3, 5, -2, 6, -1]
返回值:
12
import java.util.*;
public class Solution {
/**
* max sum of the subarray
* @param arr int整型一维数组 the array
* @return int整型
*/
public int maxsumofSubarray (int[] arr) {
// write code here
int sum = 0,max=0;
for(int i = 0;i<arr.length;i++){
if(arr[i]>0){
sum = sum + arr[i];
}else{
sum = Math.max(sum + arr[i],0);
}
max = Math.max(max,sum);
}
return max;
}
}
该博客介绍了一个算法问题,即如何在O(n)的时间复杂度和O(1)的空间复杂度下找到一个整数数组中具有最大累加和的子数组。给出的示例代码展示了如何遍历数组,通过维护当前和与最大和两个变量来解决此问题。在给定的数组[1,-2,3,5,-2,6,-1]中,最大子数组和为12。
440

被折叠的 条评论
为什么被折叠?



