解题思路:prv记录前面值的和,如果prv+it>it即前面的值加上现在数这个值小于这个数本身,则直接从这个数开始计算,这个数作为第一数,继续找下去,Max记录片段的最大值
代码:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int Max=nums[0],prv=0;
for(int it:nums){
prv=max((prv+it),it);
Max=max(Max,prv);
}
return Max;
}
};