面试题31:连续子数组的最大和
题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。
❖ 解法一:举例分析数组的规律
代码如下:
bool flag = false;int FindGreatestSumOfSubArray(int *pDate, int nLength)
{if ((pDate == nullptr) || (nLength <= 0)){flag = true;return 0;}flag = false;int cursum = 0;int nGreatestSum = 0x80000000;for (int i = 0; i < nLength; i++){if (cursum <= 0) cursum = pDate[i];else cursum += pDate[i];if (cursum > nGreatestSum) nGreatestSum = cursum;}return nGreatestSum;
}
❖ 解法二:应用动态规划法
暂无!!!