题目:
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
思路:
- 这种算法有个前提,所求的最大子序和不能小于0.
- 有了这个前提,我们就可以直接从左往右依次累加。每次累加之后,若和大于0,则把值赋给Max,否则就清空 和,重新开始累加。
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int max,add;
max=nums[0];
add=0;
for(int i=0;i<nums.size();i++)
{
if(add<0)
add=0;
add=add+nums[i];
if(max<add)
max=add;
}
return max;
}
};