该题目进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。
code:
int maxSubArray(int* nums, int numsSize)
{
int *pNumber = (int *)malloc(numsSize * sizeof(int));
pNumber[0] = nums[0];
for(int i = 1;i < numsSize;i ++)
{
pNumber[i] = nums[i] < pNumber[i - 1] + nums[i] ? pNumber[i - 1] + nums[i] :nums[i];
}
//求全局得最优解
int result = pNumber[0];
for(int i = 0;i < numsSize;i ++)
{
if(result < pNumber[i])
{
result = pNumber[i];
}
}
return result;
}
参考资料:
1 https://blog.csdn.net/lw_power/article/details/80892362 LeetCode 题解之 53. Maximum Subarray(连续子数组的最大和问题)