题目:
给你一个整数数组 nums
,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6
思路:
依次累加求最大的,一旦发现下一个数大于前几个数之和,就抛弃前几个数,从这个数开始累加。
代码:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int value=nums[0];
int pre=0;
for(int num:nums)
{
pre=max(pre+num,num);
value=max(value,pre);
}
return value;
}
};