4.最大子序和

題目描述:

給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。
示例:

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

代碼實現:

JavaScript

方法一:

  • 貪心算法,遍歷數組,每一步都選擇最優和,最終結果就是最優和。
  • 時間複雜度:O(n)。
/**
 * @param {number[]} nums
 * @return {number}
 */
var maxSubArray = function(nums) {
    var sum = nums[0]
    var ans = sum
    for (var i = 1; i < nums.length; i++ ) {
        if (sum > 0) { 
            sum += nums[i]  //要想取得最優和,子序的開始必須爲正數
        } else {
            sum = nums[i]
        }
        ans = Math.max(sum, ans) //取最優和
    }
    return ans
};

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章