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.
题目思考:
本题要求给定数组中连续子列的最大总和
Solution:
int maxSubArray(int A[], int n) {
if (n == 0)
return 0;
int max_ending_here = A[0];
int max_so_far = A[0];
for(int i = 1; i < n; ++i)
{
if (max_ending_here < 0)
// So far we get negative values, this part has to be dropped
max_ending_here = A[i];
else
// we can accept it, it could grow later
max_ending_here += A[i];
max_so_far = max(max_so_far, max_ending_here);
}
return max_so_far;
}
本文介绍了一种寻找数组中具有最大和的连续子数组的方法。通过动态规划思想,该算法能在O(n)的时间复杂度内解决此问题。举例说明了如何从给定数组中找出最大和子数组。
351

被折叠的 条评论
为什么被折叠?



