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; } };