连续子数组的最大值O(n)解法

原文链接http://blog.nlogn.cn/programming-pearls-the-maximum-sum-of-substring/

这里头有介绍相应的O(n)解法,查过了同样的问题,不过只有代码,没说对思路

看完之后,会觉得其实很简单,就是当前值要不要把前面的值加上去
下面直接提供一个AC的代码

//find the continunous sun 
int func(vector<int>& a) {
    int last_adding = 0;
    int max_result = a[0];
    for (int i = 0; i < a.size()-1; i++) {
        last_adding += a[i];
        if (last_adding < 0)
            last_adding = 0;
        max_result = max(a[i + 1] + last_adding, max_result);
    }
    return max_result;
}

你可能感兴趣的:(C和CPP)