给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
1、循环暴力方法
两层循环,内循环找到以i开始的最大的子序列和,外循环找到i到n-1中以i到n-1为开始的最大子序列和。
比如[-2,1,3,-1]
内循环找到以-2开始[-2],[-2,1],[-2,1,3],[-1,1,2,-1]中和最大的
外循环找以-2,1,3,-1开始的最大中的最大
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int max_res = INT_MIN;
int max_res_final = INT_MIN;
for (int i = 0; i < nums.size(); ++i) {
int sum = nums[i];
max_res = sum > max_res?sum:max_res;
for (int j = i + 1; j < nums.size(); ++j) {//从 i开始向后面走,找出和为最大的
sum += nums[j];
max_res = sum > max_res ? sum : max_res;
}
max_res_final = max_res_final > max_res ? max_res_final : max_res;
}
return max_res_final;
}
};
2、