刷題92—動態規劃(九)

138.連續數列

題目連接

來源:力扣(LeetCode)
連接:https://leetcode-cn.com/problems/contiguous-sequence-lcci
著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。javascript

題目描述

給定一個整數數組,找出總和最大的連續數列,並返回總和。java

示例:數組

輸入: [-2,1,-3,4,-1,2,1,-5,4]
輸出: 6
解釋: 連續子數組 [4,-1,2,1] 的和最大,爲 6。
進階:網絡

若是你已經實現複雜度爲 O(n) 的解法,嘗試使用更爲精妙的分治法求解。code

題目分析

  1. 定義數組dp[i]:以nums[i]結尾的最大的連續數列和;
  2. 狀態轉移方程:dp[i] = Math.max(dp[i-1]+nums[i-1],nums[i-1]);
  3. 返回res:res = Math.max(res,dp[i]),res是nums中最大連續子序列和。
/**
 * @param {number[]} nums
 * @return {number}
 */
var maxSubArray = function(nums) {
    let n = nums.length;
    let dp = new Array(n);
    dp[0] = nums[0];
    dp[1] = nums[0];
    let res = dp[1];
    for(let i=2; i<=n; i++){
        dp[i] = Math.max(dp[i-1]+nums[i-1],nums[i-1]);
        res =  Math.max(res,dp[i]);
    }
    return res;
};

 
相關文章
相關標籤/搜索