力扣刷题:最大子数组和
2026/6/7 15:59:00 网站建设 项目流程

题目:
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组是数组中的一个连续部分。

示例 1:

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

示例 2:

输入:nums = [1]
输出:1

示例 3:

输入:nums = [5,4,-1,7,8]
输出:23

解析:
这道题使用Kadane算法来解题。
Kadane算法采用动态规划的思想,其核心在于:

以每个位置为结尾的子数组,最大和是多少?

对于数组中的每个元素,我们面临一个关键选择:

1 从当前元素重新开始一个新的子数组
2 将当前元素加入到前面的最大子数组中

具体代码:

/** * @param {number[]} nums * @return {number} */varmaxSubArray=function(nums){letcurSum=nums[0]letmaxSum=nums[0]for(leti=1;i<nums.length;i++){curSum=Math.max(nums[i],curSum+nums[i])maxSum=Math.max(maxSum,curSum)}returnmaxSum};

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询