最大连续子数组和

leetcode 53. Maximum Subarray

一、问题描述

给定一个整数数组nums,找到连续的子数组(包含至少一个数字),它的总和最大并返回其总和。
【例如】
输入:[-2,1,-3,4,-1,2,1,-5,4]
输出:6
说明[4,-1,2,1]具有最大的总和= 6。

二、算法实现

/*******************************************
Author:tmw
date:2018-5-19
*******************************************/
#include <stdio.h>
#include <stdlib.h>

#define max( a,b ) (a>b?a:b)
int maxSubArray(int* nums, int numsSize)
{
    int i,temp_sum;
    int cur_sum = nums[0]; //(a[i],a[i+1]) -- a[i]
    int max_sum = INT_MIN;

    if(numsSize==1) return cur_sum;

    for( i=1;i<numsSize; i++ )
    {
        temp_sum = cur_sum; //(a[i],a[i+1]) -- a[i]
        cur_sum = max(nums[i]+cur_sum,nums[i]); //(a[i],a[i+1]) -- max1=max(a[i]+a[i+1],a[i+1])
        max_sum = max(max_sum,max(temp_sum,cur_sum));//(a[i],a[i+1]) -- max2=max(a[i],max1)并更新
    }
    return max_sum;
}

三、执行结果

accept


梦想还是要有的,万一实现了呢~~~~ヾ(◍°∇°◍)ノ゙~~~

猜你喜欢

转载自blog.csdn.net/qiki_tangmingwei/article/details/80401704