2021-01-03 | 53. 最大子序和

网友投稿 554 2022-10-31

2021-01-03 | 53. 最大子序和

2021-01-03 | 53. 最大子序和

1. 题目描述

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

示例:

输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

进阶:

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

2. 解题思路

这里我们使用动态规划来解决这个问题,当前最大连续子序列和sum,结果为res:

如果sum > 0,则说明 sum 对结果有增益效果,则 sum 保留并加上当前遍历数字如果 sum <= 0,则说明 sum 对结果无增益效果,需要舍弃,则 sum 直接更新为当前遍历数字

每次遍历都比较res和sum的大小,将最大值赋值为res,遍历结束后就返回结果。

复杂度分析:

时间复杂度:O(n),其中n是数组nums的长度,需要对整个数组进行遍历。空间复杂度:O(1)

3. 代码实现

/** * @param {number[]} nums * @return {number} */var maxSubArray = function(nums) { let sum = 0, res = nums[0] for(let num of nums){ sum > 0 ? sum += num : sum = num res = Math.max(sum, res) } return res};

4. 提交结果

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Wx-tools是基于微信公众平台API的轻量级框架。
下一篇:LSNewsDetailWebviewContainer是一个可快速集成的新闻详情界面框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~