版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011296723/article/details/82077987
《剑指offer—面试题42:连续子数组的最大和》
注明:仅个人学习笔记
/**
*
*
* 连续子数组的最大和
*
*/
public class FindGreatestSumOfSubArray42
{
boolean g_InvalidInput = false;// 来标记是否输入无效
public int FindGreatestSumOfSubArray(int[] array)
{
int length = array.length;
if (array == null || length < 0)
{
g_InvalidInput = true;
return 0;
}
g_InvalidInput = false;
int nCurSum = 0;//累加的子数组和
int nGreatestSum = Integer.MIN_VALUE;//最大的子数组和
for (int i = 0; i < length; i++)
{
if (i == 0 || nCurSum <= 0)// 开始的是第一个数或如果当前最连续子数组的最大和小于0,那不能在当前最大和上继续累加
{
nCurSum = array[i];
} else
{
nCurSum += array[i];
}
if (nCurSum > nGreatestSum)
{
nGreatestSum = nCurSum;
}
}
return nGreatestSum;
}
}