欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

剑指offer-连续子数组的最大和

程序员文章站 2022-07-15 16:34:23
...

问题描述:

 

源码:

解法1:找规律

书上的规律

剑指offer-连续子数组的最大和

剑指offer-连续子数组的最大和

class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {
        int nlength = array.size();
        if(nlength==0)    return 0;
        int cursum=0, maxsum=INT_MIN;
        for(int i=0; i<nlength; i++){
            if(cursum<=0)
                cursum=array[i];
            else
                cursum+=array[i];
            if(cursum>maxsum)
                maxsum=cursum;
        }
        return maxsum;
    }
};

解法2:动态规划

result[i]表示以第i个元素为末尾的子集的最大和

class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {
        int nlength = array.size();
        if(nlength==0)    return 0;
        vector<int> result(nlength+1, INT_MIN);
        int nmax = INT_MIN;
        for(int i=1; i<=nlength; i++){
            result[i] = result[i-1]<=0? array[i-1]:result[i-1]+array[i-1];
            if(result[i]>nmax)    nmax=result[i];
        }
        return nmax;
    }
};