//统计nums[i]之前的sum值,如果这个值大于0,则拼接之前的序列,否则新的序列从i开始
//保留一个全局最大值,每次得到的candidate都和它比较
class Solution {
public:
int maxSubArray(vector<int>& nums)
{
int len=nums.size();
if(len<1)
return 0;
if (len==1)
return nums[0];
int sum=nums[0];
int ret=nums[0];
int i=0;
int j=1;
while(i<len&&j<len)
{
if(sum>=0)
{
sum+=nums[j];
j++;
}
else if(sum<0)
{
i=j;//若要返回下标,此时start=i;
sum=nums[i];
j++;
}
ret=max(ret,sum);//若要返回下标,此时end=j;
}
return ret;
}
};
[leetcode] Maximum Subarray
最新推荐文章于 2022-07-14 19:35:25 发布