【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题意:
给出一个序列,求出一段区间,使得该区间的和是所有区间最大的,并输出这个区间和
思路:
先求出单个最大值,然后从第一个开始连续求和,只要某区间的和小于0,那么就从0开始继续往后求和
class Solution
{
public:
int maxSubArray(vector<int>& nums)
{
int maxn=-999999999,len = nums.size(),i,j;
for(i = 0; i<len; i++)
maxn = max(maxn,nums[i]);
int sum = 0;
if(maxn<0) return maxn;
for(i = 0; i<len; i++)
{
sum = sum+nums[i];
maxn = max(sum,maxn);
if(sum<0) sum = 0;
}
return maxn;
}
};