力扣53、最大子序列的和

给定一个整数数组 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、

发布了107 篇原创文章 · 获赞 125 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/Li_haiyu/article/details/100627801