[LeetCode] Maximum Subarray 最大子序和
2018-02-28 10:27
459 查看
给定一个序列(至少含有 1 个数),从该序列中寻找一个连续的子序列,使得子序列的和最大。
扩展练习:
若你已实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。
思路:定义两个变量res和curSum,其中res保存最终要返回的结果,即最大的子数组之和,curSum初始值为0,每遍历一个数字num,比较curSum + num和num中的较大值存入curSum,然后再把res和curSum中的较大值存入res,以此类推直到遍历完整个数组,可得到最大子数组的值存在res中。
例如,给定序列 [-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 53. 最大子序和
- LeetCode - 53. 最大子序和
- LeetCode题库解答与分析——#53.最大子序和MaximumSubarray
- LeetCode53最大子序和
- leetcode-最大子序和(动态规划讲解)
- leetcode:Maximum Subarray(最大的连续子数组) 【面试算法】
- [LeetCode] Maximum Swap 最大置换
- 【LeetCode】Maximum Depth of Binary Tree (二叉树最大深度)
- Leetcode 53 Maximum Subarray 最大子串和
- LeetCode 53. Maximum Subarray(最大子数组和)
- [LeetCode]Maximal Rectangle寻找最大矩形
- [LeetCode] Max Consecutive Ones II 最大连续1的个数之二
- [LeetCode]:动态规划+回溯 Largest Divisible Subset 最大可整除的子集合
- LeetCode 152. Maximum Product Subarray(最大乘积)
- LeetCode_直方图最大面积(Largest Rectangle in Histogram)
- [LeetCode]121. Best Time to Buy and Sell Stock(求近期股票能获得的最大利润)
- Leetcode(3)-找最大子串的长度
- 【LeetCode】 53. Maximum Subarray 最大子序列和
- [Leetcode] maximal rectangle 最大矩形
- leetcode之数组类之区间类-----OJ 56/57/435/239 重叠区间个数 合并区间 插入区间 滑动窗口最大值