给定一个长度为 n 的数组 arr ,返回其中任意连续子数组的最大累加和
题目保证没有全为负数的数据
数据范围:
,数组中元素值
要求:时间复杂度为
,空间复杂度为
int maxsumofSubarray(int* arr, int arrLen ) {
// write code here
int dp[arrLen+1];
memset(dp,0,arrLen+1);
dp[0] = arr[0];
int max = dp[0];
for(int i=1;i<arrLen;i++)
{
dp[i] = dp[i-1]+arr[i] > arr[i] ? dp[i-1]+arr[i]:arr[i];
max = dp[i]>dp[i-1] ? dp[i]:dp[i-1];
}
return max;}
int maxsumofSubarray(int* nums, int numsSize) {
int i, sum = *nums, ans = *nums;
for (i = 1; i < numsSize; ++i) {
if (sum >= 0) sum += *(nums + i);
else sum = *(nums + i);
ans = fmax(ans, sum);
}
return ans;
}