连续子数组的最大和

来源:互联网 发布:在数据库中存储的是 编辑:程序博客网 时间:2024/04/20 01:46

题目:连续子数组的最大和。

思路:举个例子:

{1,-2,4,5}

我们知道前两个数组元素的和是-1,因此后面数组如加上这两个元素将会更小。所以我们设置一个变量currentsum,表示遍历到目前为止的和,若和小于0,那我们设置其为0,继续查找,变量max的值就是要返回的值。具体代码比较简短,这里不在赘述。

注:max的更新应该放在判断current是否小于0的前面。

不足之处,欢迎批评指正。

class Solution {

public:
    int FindGreatestSumOfSubArray(vector<int> array) {
        if(array.empty()) return 0;
        int currentsum=array[0];
        int max=currentsum;
        for(int i=1;i<array.size();i++){
            currentsum+=array[i];
            max=max>currentsum?max:currentsum;
            if(currentsum<0){
                currentsum=0;
            }
        }
        return max;
    }
};
0 0