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
the contiguous subarray
代码
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));
}
};
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));
}
};
相关文章推荐
- leetcode 53. Maximum Subarray-最大子数组|动态规划
- leetcode 53. Maximum Subarray 子数组最大和
- leetcode_53. Maximum Subarray-子数组最大和
- [LeetCode] 53. Maximum Subarray 最大子数组
- LeetCode Maximum Product Subarray(最大子数组乘积)
- LeetCode WIith JS || 53. Maximum Subarray[寻求最大连续序列]
- 【LeetCode】 53. Maximum Subarray 最大子序列和
- 【leetcode】53. Maximum Subarray 连续子序列的最大和
- LeetCode:152_Maximum Product Subarray | 最大乘积连续子数组 | Medium
- LeetCode-643:Maximum Average Subarray I (k个元素的最大子数组)
- LeetCode-152:Maximum Product Subarray (乘积最大连续子数组) -- medium
- [leetcode]53. Maximum Subarray 最大连续子串python实现【medium】
- leetcode152-Maximum Product Subarray(乘积最大子数组)
- LeetCode:152_Maximum Product Subarray | 最大乘积连续子数组 | Medium
- LeetCode: -Dynamic Programming-Maximum Subarray[53]-子数组最大和
- LeetCode 152. Maximum Product Subarray (最大乘积子数组)
- LeetCode-Maximum Product Subarray-最大乘积子数组-情况判断
- [LeetCode] Maximum Average Subarray I 子数组的最大平均值
- Maximum Subarray 最大子数组和(连续)@LeetCode
- [LeetCode] 152. Maximum Product Subarray 求最大子数组乘积