题意:
给一个序列,求至少含一个元素的最大子段和?
思路:
跟求普通的最大子段和差不多,只不过需要注意一下顺序。由于至少需要一个元素,所以先将ans=nums[0]。接下来可以用sum求和了,如果小于0就重置为0,表示重新开始累加。注意代码中两个if的顺序不可以呼唤。
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int sum=, ans=nums[];
for(int i=; i<nums.size(); i++)
{
sum+=nums[i];
if(sum>ans) ans=sum;
if(sum<) sum=;
}
return ans;
}
};
AC代码