一、累加
遍历累加,比之前累加值大的更新结果res,当累加值小于0时,将下一个元素值赋予nCursum,一直遍历到最后
class Solution {
public:
int maxSubArray(vector<int>& nums) {
if(nums.size()==0)
return 0;
int nCursum=0;
int res=0x80000000;
for(int i=0;i<nums.size();++i)
{
if(nCursum<=0)
nCursum=nums[i];
else
nCursum+=nums[i];
if(nCursum>res)
res=nCursum;
}
return res;
}
};
二、动态规划
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int maxnum=nums[0];
for(int i=1;i<nums.size();++i)
{
if(nums[i-1]>0)
nums[i]+=nums[i-1];
maxnum=max(maxnum,nums[i]);
}
return maxnum;
}
};