Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

53.最大子序列和 #38

Open
wind-jyf opened this issue Apr 23, 2020 · 0 comments
Open

53.最大子序列和 #38

wind-jyf opened this issue Apr 23, 2020 · 0 comments
Labels

Comments

@wind-jyf
Copy link
Owner

最大子序列和

一、题目详情

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

示例:

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

进阶:

如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。

二、解题思路

其实总的解题思路就是两两比较

  1. 设置一个值记录当前连续之和最大值,另外一个值设置为所有连续之和最大值
  2. 当我们发现当前连续之和小于0时,此时就应将当前值设为下一个值
  3. 每求出一次当前连续之和时,都要和所有连续之和最大值进行比较

三、代码实现

/**
 * @param {number[]} nums
 * @return {number}
 */
var maxSubArray = function(nums) {
    let max = nums[0];//所有连续之和最大值
    let sum = nums[0];//当前连续之和最大值
    for(let i=1;i<nums.length;i++){
        if(sum>0){
            sum+=nums[i];
        }else{
            sum = nums[i];
        } 
        max = Math.max(max,sum);//和所有连续之和最大值比较
    }
    return max;
};

参考


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant