题目链接:https://leetcode.cn/problems/maximum-subarray/
一.先解释下什么是子数组
子数组就是在题目提供的数组下,找出一个符合题意的、连续的、部分的数组,这里的连续很重要,关乎着状态方程的分析以及边界条件的处理,这类题目着重分析当前位置和这个位置前一个位置的状态,要注意同一个位置可能有多种不同的状态。
二.题目介绍
三.题目分析
1.状态表示
2.分析状态转移方程
四.完整代码
int maxSubArray(vector<int>& nums)
{
// 1.建表
// 2.处理边界条件
// 3.填表
// 4.返回值
int n = nums.size();
vector<int> dp(n+1);
int res = INT_MIN;
for(int i = 1; i<=n; i++)
{
dp[i] = max(dp[i-1]+nums[i-1], nums[i-1]);
res = max(dp[i], res);
}
return res;
}