題目描述:
給定一個整數數組 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
};