做过很多次了,关键就是要理解 if(current_sum<0)current_sum=0

因为值已经小于0了,假设取后一位,那么加上现在的负值current_sum,结果一定比后一位小,所以直接舍去,置current_sum=0
int maxSubArray(vector<int>& nums) {
int max_sum=0-(1<<31);
int current_sum=0;
for(int i=0;i<nums.size();++i){
current_sum+=nums[i];
if(current_sum>max_sum)max_sum=current_sum;
if(current_sum<0)current_sum=0;
}
return max_sum;
}
```