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
the contiguous subarray
思路动态规划,动态规划核心即找到状态转移方程。
状态转移方程也很简单:
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;
}
};
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;
}
};
相关文章推荐
- LeetCode - 53. Maximum Subarray
- Leetcode 53. Maximum Subarray
- LeetCode 53. Maximum Subarray 题解
- [Leetcode] 53. Maximum Subarray 解题报告
- 【LeetCode】53. Maximum Subarray
- leetcode 53. Maximum Subarray
- LeetCode 53. Maximum Subarray
- leetcode_53. Maximum Subarray
- [勇者闯LeetCode] 53. Maximum Subarray
- [LeetCode]53. Maximum Subarray
- leetcode 53. Maximum Subarray
- 【LeetCode】53. Maximum Subarray
- 【leetcode】53. Maximum Subarray
- LeetCode53. Maximum Subarray
- leetcode 53. Maximum Subarray
- leetcode 53. Maximum Subarray
- [leetcode]53. Maximum Subarray 最大连续子串python实现【medium】
- LeetCode||53. Maximum Subarray
- [LeetCode] 53. Maximum Subarray 最大子数组
- 53. Maximum Subarray LeetCode