`
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int sum = 0; //sum依次表示大小为i+1的数组的最大子序和。
int maxSum = nums[0];
//动态规划
for (int i = 0; i < nums.size(); i++) {
sum = max(sum + nums[i], nums[i]);//大小为i+1的数组的最大子序和由大小为i的数组计算而来
//设状态S[i], 表示以A[i]结尾的最大连续子序列和,状态转移方程如下:S[i] = max(S[i-1] + A[i],A[i])
maxSum = max(sum, maxSum);
}
return maxSum;
}
};