0058 连续子数组的最大和

今天在牛客上做的一题,求连续子数组的最大值。

思路:

1)当当前和的值小于0,则丢弃,以下一个值作为新起点求和;

2)如果当前和的值大于记录的最大值,则更新最大值。

代码如下:

int FindGreatestSumOfSubArray(vector<int> array) {
  	if(array.empty())
            return 0;
        int maxSumOfSubArray = std::numeric_limits<int>::min();//初始化为计算机整型最小值
        int currentSum = 0;
        int start=0;
        int len = array.size();
        while(start<len)
            {
            if(currentSum<=0)//和小于0则放弃前面记录的和,因为前面已经成为负担,不需要
                currentSum = array[start];
            else 
                currentSum += array[start];
            
            if(currentSum > maxSumOfSubArray)
                maxSumOfSubArray = currentSum;
            ++start;
        }
        return maxSumOfSubArray;
    }

posted @ 2016-08-14 17:59  gendlee1991  阅读(13)  评论(0)    收藏  举报