LeetCode53最大子序和

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;
}

猜你喜欢

转载自blog.csdn.net/a_learning_boy/article/details/84319269
今日推荐