子数组的最大累加和问题-D
题目描述 : ------------------------------------------------------------
给定一个数组arr,返回子数组的最大累加和
例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.
题目保证没有全为负数的数据
[要求]
时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)
输入样例 : ------------------------------------------------------------
[1, -2, 3, 5, -2, 6, -1]
返回值 : ------------------------------------------------------------
12
class Solution {
public:
int maxsumofSubarray(vector<int>& arr) {
int current = arr[0], sum = 0;
for (int i = 1; i < arr.size(); i++) {
current = current > 0 ? current + arr[i] : arr[i];
sum = max(current, sum);
}
return arr.size() > 1 ? sum : arr[0] > 0 ? arr[0] : sum;
}
};