该题目进阶:如果你已经实现复杂度为 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 LeetCode 题解之 53. Maximum Subarray(连续子数组的最大和问题)