您的位置:首页 > 其它

【LeetCode】Maximum Subarray (最大连续子序列和)

2013-10-03 09:17 288 查看
描述:

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
.

click to show more practice.

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
代码:O(n)

class Solution {
public:
int maxSubArray(int A[], int n) {
// Note: The Solution object is instantiated only once and is reused by each test case.
int maxendinghere = 0,maxsofar = 0;
for(int i = 0; i<n; i++)
{
maxendinghere = max(maxendinghere + A[i],0);
maxsofar = max(maxsofar,maxendinghere);
}
if(maxsofar == 0) //数组元素全部非正数
{
int tmp = A[0];
for(int i = 1; i<n; i++)
{
tmp = max(tmp,A[i]);
}
return tmp;
}
return maxsofar;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: