您的位置:首页 > 其它

LeetCode 53. Maximum Subarray

2016-08-09 19:24 429 查看
问题描述:

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
.
思路动态规划,动态规划核心即找到状态转移方程。
状态转移方程也很简单:

local[i+1] = max(local[i] + a[i+1],a[i+1]);
global[i+1] = max(global[i] + a[i+1],global[i]);

即分别用两个变量保存局部最大和全局最大。
AC代码如下:

class Solution {
public:
int maxSubArray(vector<int>& nums)
{
int sumLocal = nums[0];
int sumGlobal = nums[0];
for(int i = 1;i < nums.size();i++)
{
sumLocal = max(sumLocal + nums[i],nums[i]);
sumGlobal = max(sumGlobal,sumLocal);
}
return sumGlobal;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: