# 最大子序列

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

示例 1:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 示例 2:

输入:nums = [1] 输出:1 示例 3:

输入:nums = [0] 输出:0 示例 4:

输入:nums = [-1] 输出:-1 示例 5:

输入:nums = [-100000] 输出:-100000

# 思路:

动态规划,对数组进行遍历,当前最大子序列和为sum, 结果为ans

var maxSubArray = function(nums){
	// 子序列结果
    let ans = nums[0];
    // 子序列和
    let sum = 0;
    for(const i of nums){
        // 如果sum>0 , 保留最大值和子序列
        if(sum > 0) sum += i;
        // 否则舍弃
        else sum = i;
        // 比较最大值,赋值给ans
        ans = Math.max(sum, ans);
    }
    return ans;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
最后更新时间: 6/20/2022, 10:48:50 PM