使用变量preSum存储数组的前N个元素和,如果preSum<0,则重置为0
使用变量maxSum存储子数组之和的最大值
int MaxSum(int *arr, int n)
{
int preSum = arr[0];
int maxSum = arr[0];
for(int i=1; i<n; ++i)
{
if(preSum < 0)
preSum = 0;
preSum += arr[i];
if(maxSum < preSum)
maxSum = preSum;
}
}
算法复杂度O(N),只使用了两个变量。
网友评论