53. 最大子序和
//定义dp数组的含义:dp[i]表示从第0个元素到该元素的最大连续子数组之和
#include<vector>
#include<algorithm>
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int n = nums.size();
if(n < 2) return nums[0];
//创建dp数组
vector<int> dp(n,0);
//初始化、边界条件
dp[0] = nums[0];
for(int i = 1; i < n; i++)
{
//如果加上当前元素后的,没有当前元素大,直接抛弃之前的最大连续子数组,将当前元素作为最大子数组的起始
dp[i] = max(nums[i],dp[i-1]+nums[i]);
}
return *max_element(dp.begin(),dp.end());
}
};