最大连续数列和

2018-08-14  本文已影响27人  上行彩虹人

问题描述

对于一个有正有负的整数数组,请找出总和最大的连续数列。
给定一个int数组A和数组大小n,请返回最大的连续数列的和。保证n的大小小于等于3000。
测试样例:

[1,2,3,-6,1]
返回:6

解题思路

如果前n个数之和已经是负数就没必要在加了。
[1,2,3,-6,1]
[1,3,6,0,1]
最大为6

class MaxSum {
public:
    int getMaxSum(vector<int> A, int n) {
        // write code here
        int ans = A[0];
        int sum = A[0];
        for (int i=1;i<A.size();i++){
            if (sum<0) sum= A[i];
            else if (sum>=0) sum+=A[i];        
            if (ans<sum) ans=sum;  
        }  
        return ans;
    }
};
上一篇下一篇

猜你喜欢

热点阅读