LeetCode热题100-最大子数组和【JavaScript讲解】
题目:
解题思路:
声明:这里的解题思路及代码是作者学习LeetCode上的画手大鹏。
- 这里我们使用动态规划首先对数组进行遍历,当前最大连续子序列和为 sum,结果为 ans。
- 如果 sum > 0,则说明 sum 对结果有增益效果,则 sum 保留并加上当前遍历数字。
- 如果 sum <= 0,则说明 sum 对结果无增益效果,需要舍弃,则 sum 直接更新为当前遍历数字。即从本数字开始形成最新的子数组。
- 每次比较 sum 和 ans的大小,将最大值置为ans。【通过比较sum和ans的值来判断是否需要留取这一段子数组。即
ans = Math.max(sum,ans)
】 - 点击此处跳转至画手大鹏的讲解界面 ,下滑有画图讲解;也欢迎在本文章下留言不懂的地方。
解答代码:
/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function(nums) {
let ans = nums[0];
let sum = 0;
for(const num of nums){
if(sum > 0){
sum += num;
}else{
sum = num;
}
ans = Math.max(sum,ans);
}
return ans;
};