题目描述:
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4]
,
the contiguous subarray [4,-1,2,1]
has the largest sum = 6
.
要求出一个数组中和最大的子串,首先设一个子串是以num[i]结尾(0<=i<size),所以,如果num[i+1]为正数,那么原数字和加上num[i+1]大于原数,所以扩张这个子串,反之舍弃这个子串。代码如下:
int maxSubArray(vector<int> nums) {
int sum=0;
int max_sum=INT_MIN;
for(int i=0;i<nums.size();i++){
if(sum>=0){
sum+=nums[i];
}else{
sum=nums[i];
}
if(sum>max_sum){
max_sum=sum;
}
}
return max_sum;