问题描述:
在数组中找到连续的子列(包含至少一个数字),使其和最大。
解题思路:
声明一个sum数组,用来记录当前连续子列的最大和。key:如果当前元素加上sum[i-1],比本身的数值要小的话,则选取当前元素的数值作为sum[i]
源代码:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
vector<int> sum;
sum.push_back(nums[0]);
for(int i=1;i<nums.size();i++)
{
if(nums[i]>sum[i-1]+nums[i]) sum.push_back(nums[i]);
else sum.push_back(sum[i-1]+nums[i]);
}
int max=sum[0];
for(int i=0;i<sum.size();i++)
if(max<sum[i]) max=sum[i];
return max;
}
};
public:
int maxSubArray(vector<int>& nums) {
vector<int> sum;
sum.push_back(nums[0]);
for(int i=1;i<nums.size();i++)
{
if(nums[i]>sum[i-1]+nums[i]) sum.push_back(nums[i]);
else sum.push_back(sum[i-1]+nums[i]);
}
int max=sum[0];
for(int i=0;i<sum.size();i++)
if(max<sum[i]) max=sum[i];
return max;
}
};