所有代码均通过G++编译器测试,仅为练手纪录。
//面试题31:连续子数组的最大和
//题目:输入一个整型数组,数组里面有正数也有负数。数组中一个或连续的多个整数组成一个字数组。。
// 求所有子数组的和的最大值。要求时间复杂度为O(n)。
//面试题31:连续子数组的最大和
//题目:输入一个整型数组,数组里面有正数也有负数。数组中一个或连续的多个整数组成一个字数组。。
// 求所有子数组的和的最大值。要求时间复杂度为O(n)。
int GetMaxSum(int *pNum,int nSize)
{
if(NULL == pNum || nSize <= 0)
{
return -1;
}
int nCurSum = 0;
int nMaxSum = 0x80000000;
for(int i = 0; i< nSize; ++i)
{
if(nCurSum <= 0)
{
nCurSum = pNum[i];
}
else
{
nCurSum += pNum[i];
}
if(nCurSum > nMaxSum)
{
nMaxSum = nCurSum;
}
}
return nMaxSum;
}
void TestGetMaxSum()
{
int arrValue[] = {1,-2,3,10,-4,7,2,-5};
LogInfo("GetMaxSum:%d",GetMaxSum(arrValue,sizeof(arrValue)/sizeof(int)));
}
本文介绍了一种求解连续子数组最大和的算法,该算法可在O(n)的时间复杂度内找到给定整型数组中所有可能子数组的最大和。通过具体实现代码展示了如何高效地解决此类问题。

被折叠的 条评论
为什么被折叠?



