LeetCode 53.最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
修改原数组解法,如果当前值加上一个值大于当前的值,则让当前值改为相加后的值
var maxSubArray = function(nums) { for(let i=1;i<nums.length;i++){ if(nums[i-1] + nums[i]>nums[i]) { nums[i] = nums[i-1] + nums[i]; } } return Math.max(...nums); };
不修改原数组方法
var maxSubArray = function(nums) { let cur; let pre; let sum; cur = pre = sum = nums[0]; for(let i = 1;i<nums.length;i++) { if(pre >= 0) { cur = nums[i] + pre; pre = cur; }else { cur = nums[i]; pre = cur; } sum = sum>pre? sum : pre; } return sum; }
reduce方法
var maxSubArray = function(nums) { let max = -Infinity; nums.reduce(function(t,val,i){ t = t>0? t+val : val; if(max <= t) { max = t } console.log(t) return t; },0) return max; }
浙公网安备 33010602011771号