题目描述
给定一个数组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
int maxsumofSubarray(vector<int>& arr) {
// write code here
if(arr.empty()) return 0;
int maxn = INT_MIN;
int cur = 0;
for(int i=0; i<arr.size();i++){
cur += arr[i];
maxn = max(maxn, cur);
cur = cur < 0 ? 0 : cur;
}
return maxn;
}