给你一个整数数组 nums
,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
动态规划
fi表示以nums[i]结尾的所有连续子数组的最大和。
f(i)=max{f(i−1)+nums[i],nums[i]} 比较单独后一个数和前一个f(i)的大小
class Solution {
public: int maxSubArray(vector<int>& nums) {
int pre =0; int maxsum = nums[0];int n = nums.size();
for(int i = 0;i<n;i++)
{ pre = max(pre+nums[i],nums[i]);
maxsum = max(maxsum,pre);
} return maxsum;
}
};
继续学习线段树