您的位置:首页 > 其它

LeetCode[递归]53. Maximum Subarray 数组最大和

2017-07-19 11:40 519 查看
题目链接
https://leetcode.com/problems/maximum-subarray/#/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
.
代码
class Solution
{
public:
int max(int a,int b)
{
return a > b?a:b;
}
int maxSubArray(vector<int>& nums)
{
if(nums.empty()) return 0;
return maxsub(nums,0,(int)nums.size() - 1);
}
int maxsub(vector<int>&nums,int left,int right)
{
if(left >= right) return nums[left];
int mid = left +(right - left)/2;//这里很重要
int lmax = maxsub(nums,left,mid-1);
int rmax = maxsub(nums,mid+1,right);
int mmax = nums[mid],t = mmax;
int i;
for(i = mid - 1;i >= left;i--)
{
t += nums[i];
mmax = max(mmax,t);
}
t = mmax;
for(i = mid+1;i <=right;i++)
{
t += nums[i];
mmax = max(mmax,t);
}
return max(mmax,max(lmax,rmax));
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: