1.问题描述
给定一个整数数组(有正数、有负数,也可以全正或全负),找出总和最大的连续数列,并返回总和。
示例:
输入:[-2, 1, -3, 4, -1, 2, 1, -5, 4]
输出:6
解释:[4, -1, 2, 1]和为6
2.代码实现
int maxSubArray(vector<int>& nums)
{
int len=nums.size();
int sum=nums[0];
int max=nums[0];//最大和
for(int i=1;i<len;i++)
{
if(sum>0)
sum+=nums[i];
else//前面的序列和非正,舍去
sum=nums[i];
if(max<sum)
max=sum;
}
return max;
}
3.时间复杂度分析
算法基本操作为遍历,因此时间复杂度为O(n)。