原题
给你一个整数数组 nums
,请找出最大和的连续子数组(子数组至少包含一个元素),并返回其最大和。
是数组的连续部分。
输入:nums = [2,1,3,4,1,2,1,5] 输出:6 说明:连续子数组 [4,-1,2,1] 和最大,为 6 。
输入:nums = [1] 输出:1
输入:nums = [5,4,-1,7,8] 输出:23
题解
- 动态规划
/** * @param {number[]} nums * @return {number} */ var maxSubArray = function(nums) { let sum = 0; let res = nums[0]; nums.forEach((n) => { if(sum > 0) sum = n; // 若子数组和大于 0、保留
增益效果 else sum = n; // sum 小于等于 0.直接放弃没有增益效放弃 res = Math.max(sum, res); // 记录最大子数组和 }) return res; };