题解 | #连续子数组的最大和#

连续子数组的最大和

https://www.nowcoder.com/practice/459bd355da1549fa8a49e350bf3df484

class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {
        int sum=array[0],max_sum=array[0],max=array[0];
        for(int i=0;i<array.size()-1;i++){
            if(array[i]>max)//如果数组全是负数,找最大的负数
                max=array[i];
            if(array[i+1]+sum>0 && sum>0)//只要和为正就继续加和
                sum+=array[i+1];
            else if(array[i+1]>0)//前面和非正,当出现正数,重置和为该正数
                sum=array[i+1];
            else//和为负就重置和
                sum=0;
            if(sum>max_sum)//记录出现过的最大和
                max_sum=sum;
        }
        return (array[array.size()-1]<0 && !max_sum)?max:max_sum;
    }
};

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务