剑指 Offer 42. 连续子数组的最大和 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 int maxSubArray(int* nums, int numsSize){ //动态规划问题 int i = 0; int arr[numsSize]; int maxn = nums[0]; arr[0] = nums[0]; //如果arr[i - 1] > 0, 那么arr[i] = arr[i - 1] + nums[i] //如果arr[i - 1] < 0, 那么arr[i] = nums[i]重新开始 for(i=1; i<numsSize; i++) { arr[i] = fmax((arr[i-1] + nums[i]), nums[i]); //记录arr中最大的值即可 maxn = fmax(arr[i], maxn); } return maxn; }