连续子数组的最大和

一、题目

输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。

输入: nums = [-2,1,-3,4,-1,2,1,-5,4]

输出:6

二、思路

1.动态规划:解决子问题,寻找最优解的一个过程。递归+记忆化思想

2.memo[ ]累加和记忆化数组,进行动态规划抉择是叠加到之前的序列记录,还是从当前元素开始重新记录;利用max_result变量记录最大值

三、程序实现

var maxSubArray = function(nums) {
let memo=[];
memo[0]=nums[0]
let max_result=nums[0];
for(let i=1;i<nums.length;i++){
    memo[i]=Math.max(memo[i-1]+nums[i],nums[i]);//动态规划抉择
    max_result=Math.max(memo[i],max_result);    //记录最大值
}
return max_result;
};
posted @ 2022-05-09 14:36  花村店长  阅读(24)  评论(0)    收藏  举报