一.题目描述:
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6
二.js代码实现:
1.实现思路:
(1)先用一个变量s存储序列和,初始值设为第一个元素的值,max存储最大序列值
(2)对数组进行遍历,如果序列和s大于0,则将元素加到s中,如果s小于0,则不用加前面的增长,s即为前面某一天到今天的增长
(3)将s与max比较,如果s大于max,使max值为s
2.js代码:
/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function(nums) {
if(nums.length == 0)
{
return 0;
}
let s = nums[0];
let max = nums[0];
for(let i=1;i<nums.length;i++)
{
if(s>=0)
{
s+=nums[i];
}
else
{
s = nums[i];
}
if(s>max)
{
max=s;
}
}
return max;
};