https://leetcode.com/problems/maximum-subarray/?tab=Description
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4]
,
the contiguous subarray [4,-1,2,1]
has the largest sum = 6
.
int maxSubArray(int* nums, int numsSize) {
if(nums == NULL || numsSize == 0) return 0;
int sum = nums[0], curMax = nums[0];
for(int i = 1; i < numsSize; i++) {
sum += nums[i];
if(sum < nums[i]) sum = nums[i];
if(sum > curMax) curMax = sum;
}
return curMax;
}
int maxSubArray(int* nums, int numsSize) {
if(nums == NULL || numsSize == 0) return 0;
int sum = nums[0], curMax = nums[0];
int begin = 0, end = 0;
for(int i = 1; i < numsSize; i++) {
sum += nums[i];
if(sum < nums[i]) {
sum = nums[i];
begin = i;
}
if(sum > curMax) {
curMax = sum;
end = i;
}
}
for(int i = begin; i <= end; i++)
printf("%d ", nums[i]);
return curMax;
}