您的位置:首页 > Web前端 > JavaScript

[LeetCode] Maximum Subarray 最大子序和

2018-02-28 10:27 459 查看
给定一个序列(至少含有 1 个数),从该序列中寻找一个连续的子序列,使得子序列的和最大。

例如,给定序列 [-2,1,-3,4,-1,2,1,-5,4],
连续子序列 [4,-1,2,1] 的和最大,为 6。


扩展练习:

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

思路:定义两个变量res和curSum,其中res保存最终要返回的结果,即最大的子数组之和,curSum初始值为0,每遍历一个数字num,比较curSum + num和num中的较大值存入curSum,然后再把res和curSum中的较大值存入res,以此类推直到遍历完整个数组,可得到最大子数组的值存在res中。

/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function(nums) {
let res = -Number.MAX_VALUE, curSum = 0;
for (let i in nums) {
curSum = Math.max(curSum + nums[i], nums[i]);
res = Math.max(res, curSum);
}
return res;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode javascript