//統計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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.