求数组的子数组之和的最大值

使用变量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),只使用了两个变量。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。