[華為機試練習題]56.求子數組的最大和
題目
描寫敘述:
輸入一個整形數組。數組中連續的一個或多個整數組成一個子數組,每一個子數組都有一個和。
求全部子數組的和的最大值。
接口
Int GetSubArraySum(Int* pIntArray,Int nCount);
規格
要求時間復雜度為O(n)
舉例
比如輸入的數組為1, -2, 3, 10, -4, 7, 2, -5,和最大的子數組為3, 10, -4, 7, 2,
因此輸出為該子數組的和18
練習階段:
0基礎
代碼
/*---------------------------------------
* 日期:2015-07-05
* 作者:SJF0115
* 題目:求子數組的最大和
* 來源:華為機試練習題
-----------------------------------------*/
#include <iostream>
#include <string.h>
#include "oj.h"
using namespace std;
/*
功能:
輸入:pIntArray:數組,nCout:數組長度
輸出:
返回:返回最大值
*/
int GetSubArraySum(int* pIntArray, int nCount){
if(pIntArray == NULL || nCount <= 0){
return 0;
}//for
int sum = pIntArray[0];
int max = pIntArray[0 ];
for(int i = 1;i < nCount;++i){
if(sum < 0){
sum = 0;
}//if
sum += pIntArray[i];
if(max < sum){
max = sum;
}//if
}//for
return max;
}
[華為機試練習題]56.求子數組的最大和