给定一个长度为 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; }