给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
解题思路:
下标: 0 1 2 3 4 5 6 7 8
当前值:-2 1 -3 4 -1 2 1 -5 4
当和小于当前值,重新计算和
和 :-2 1 -2 4 3 5 6 1 5
取最大和
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int max=nums[0];
int sum = 0;
for(auto num:nums){
sum+=num;
if(num>sum){
sum=num;
}
if(max<sum){
max = sum;
}
}
return max;
// int max=0;
// //int sum=0;
// bool is_first = true;
// int size = nums.size();
// // if(size==1){
// // return nums[0];
// // }
// for(int i=0;i<size;++i){
// int sum = nums[i];
// if(is_first){
// max=nums[i];
// is_first=false;
// }
// if(sum>max){
// max = sum;
// }
// for(int j=i+1;j<size;++j){
// sum +=nums[j];
// if(sum>max){
// max = sum;
// }
// }
// }
// return max;
}
};