[剑指offer][面试题31]连续子数组的最大和
2013-10-17 15:43
393 查看
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。
#include <iostream> using namespace std; bool g_bValidInput = false; int findMaxSubArraySum(int *piArray, int iLength) { if (piArray==NULL || iLength<=0){ g_bValidInput = false; return -1; } int iMaxSoFar = piArray[0]; int iMaxEndHere = iMaxSoFar; int iIndex = 1; while (iIndex<iLength){ int tmp = iMaxSoFar+piArray[iIndex]; iMaxSoFar = (tmp>piArray[iIndex]? tmp:piArray[iIndex]); iMaxEndHere = (iMaxSoFar>iMaxEndHere? iMaxSoFar: iMaxEndHere); iIndex++; } g_bValidInput = true; return iMaxEndHere; } int main() { int data[8] = {1,-2,3,10,-4,7,2,-5}; int iMaxSum = findMaxSubArraySum(data, 8); if (g_bValidInput){ cout<<iMaxSum<<endl; } else{ cout<<"Invalid input!"<<endl; } }
相关文章推荐
- 剑指offer面试题[31]-连续数组的最大和
- 剑指offer 面试题31 求连续子数组的最大和
- 【剑指offer】面试题31-连续子数组的最大和问题
- 【面试题】剑指Offer-31-求连续子数组的最大和
- 【剑指offer】5.2时间效率——面试题31:连续子数组的最大和
- 剑指offer面试题31:连续子数组的最大和
- 剑指offer——面试题31:连续子数组的最大和
- 剑指offer 面试题31 连续子数组的最大和
- 剑指Offer面试题31:连续数组的最大和 Java实现
- 剑指offer-面试题31-连续子数组的最大和
- 剑指offer--面试题31:连续子数组的最大和
- 剑指offer-面试题31:连续子数组的最大和
- 【剑指offer】面试题31:连续子数组的最大和
- 剑指offer之面试题31连续子数组的最大和
- 剑指offer 面试题31:连续子数组的最大和 题解
- 剑指Offer----面试题31:连续子数组的最大和
- 剑指offer——面试题31:连续子数组的最大和
- 剑指offer面试题31连续子数组的最大和
- 剑指Offer_面试题31_连续子数组的最大和
- 剑指offer代码解析——面试题31连续子数组的最大和