Cosen95 / js_algorithm

🏂js数据结构与算法 系统学习
36 stars 10 forks source link

最大子序和 #45

Open Cosen95 opened 4 years ago

Cosen95 commented 4 years ago

leetcode: https://leetcode-cn.com/problems/maximum-subarray/

Cosen95 commented 4 years ago

本道题目采用动态规划来解决。先给出dp方程

dp[i] = max(dp[i - 1] + nums[i], nums[i])

我们这里需要两个变量,sum代表累计到当前位置i的最大和,temp代表全局最大子序列和,也就是最终要返回的结果。大致思路就是:

/**
 * @param {number[]} nums
 * @return {number}
 */
var maxSubArray = function(nums) {
    let temp = nums[0];
    let sum = 0;
    for (const num of nums) {
        if (sum > 0) {
            sum += num
        } else {
            sum = num;
        }
        temp = Math.max(temp, sum)
    }
    return temp;

};