输入一个整形数组。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。
- 接口
Int GetSubArraySum(Int* pIntArray,Int nCount);
- 规格
要求时间复杂度为O(n)
- 举例
因此输出为该子数组的和 18
#include <stdlib.h> #include <string.h> #include "oj.h" /* 功能: 输入:pIntArray:数组,nCout:数组长度 输出: 返回:返回最大值 */ int GetSubArraySum(int* pIntArray, int nCount) { /*在这里实现功能*/ if (NULL==pIntArray|| nCount<=0) { return -1; } int add = *pIntArray; int max = *pIntArray; pIntArray++; nCount--; while (nCount){ if (add<0) { add = *pIntArray; } else { add += (*pIntArray); } pIntArray++; nCount--; max = max > add ? max : add; } return max; }