int maxSubArray(int* nums, int numsSize) {
if(numsSize == 1) //数组中只有一个数时返回第一个数
return nums[0];
int i = 0;
int max = nums[0];
int sum = 0;
for(i; i < numsSize; i++) //查找数组中的最大值,和最大的子串必定包含最大值
{
if(max < nums[i])
max = nums[i];
}
if(max <= 0) return max; //若最大值为负直接返回最大值
int j =0;
while(j < numsSize){
sum += nums[j];
if(sum >= 0){ //和大于零时判断是否大于最大值
if(max < sum)
max = sum;
}
else //和小于零时重新求和
sum = 0;
++j;
}
return max;
}
LeetCode53最大子序和
猜你喜欢
转载自blog.csdn.net/a_learning_boy/article/details/84319269
今日推荐
周排行