描述:
给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。
注意事项 子数组最少包含一个数。
样例:
给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6。
要求:时间复杂度为O(n)。
标签:贪心 数组
思路:
累加和tem,最大值sum
如果tem<0,tem抛弃原来的值,还原为0,继续加;
如果tem>0,继续加,并与sum比较, 返回最大值。
代码:
class Solution {
public:
int maxSubArray(vector<int> &nums) {
int sum=nums[0];
int tem=nums[0];
for(int i=1;i<nums.size();i++){
if(tem<=0){
if(nums[i]>0){
tem=nums[i];
}
}
else {
tem+=nums[i];
}
if(tem>sum){
sum=tem;
}
}
return sum;
}
};