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

京公网安备 11010502036488号