动态规划
核心是建立记录前一个连续子数组和temp(可以参考官方答案,更简洁,但不一定很快想到)
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int n=nums.size();
if(n==1)return nums[0];
int out=nums[0];
int temp=0;
if(nums[0]>0)temp=nums[0];
for(int i=1;i<n;i++){
if(temp+nums[i]>0){
temp=temp+nums[i];
out=max(out,temp);
out=max(out,nums[i]);
}else{
temp=0;
out=max(out,nums[i]);
}
}
return out;
}
};