链接:https://www.nowcoder.com/questionTerminal/554aa508dd5d4fefbf0f86e5fe953abd?answerType=1&f=discussion
来源:牛客网
给定一个数组arr,返回子数组的最大累加和
例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.
[要求]
时间复杂度为O(n),空间复杂度为O(1)
示例1
输入
[1, -2, 3, 5, -2, 6, -1]
输出
12
AC代码(Java版):
public class Solution {
public int maxsumofSubarray(int[] a) {
for(int i = 1; i < a.length; i++) {
if(a[i-1] > 0)
a[i] += a[i-1];
}
int answer = a[0];
for(int i = 1; i < a.length; i++) {
if(a[i] > answer)
answer = a[i];
}
return answer;
}
public static void main(String[] args) {
int arr[] = new int[]{1, -2, 3, 5, -2, 6, -1};
System.out.println(new Solution().maxsumofSubarray(arr));
}
}