题目:
给定一个整数数组
nums
,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
小小的一题动态规划。
C代码:
int maxSubArray(int* nums, int numsSize)
{
int max = nums[0];
int *sum = (int*)malloc(sizeof(int) * numsSize);
sum[0] = nums[0];
for (int i = 1;i < numsSize;i++)
{
if (sum[i-1] >= 0)
{
sum[i] = nums[i] + sum[i-1];
}
else
{
sum[i] = nums[i]; //sum[i-1] < 0,则“丢弃”前面的元素
}
if (sum[i] > max)
max = sum[i];
}
free(sum);
return max;
}
谢谢。