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

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