Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array
the contiguous subarray [−2,1,−3,4,−1,2,1,−5,4]
,[4,−1,2,1]
has the largest sum = 6
.More practice:
If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
Solution:
int maxSubArray(int A[], int n) {
int cur = 0;
int max = INT_MIN;
for(int i=0;i<n;i++)
{
if(cur>=0)
{
cur+=A[i];
}
else
cur = A[i];
if(cur>max)
max = cur;
}
return max;
}
No comments:
Post a Comment