使用 JavaScript 查找最长的非负和序列
问题
我们需要编写一个JavaScript函数,该函数接受一个包含整数序列的数组,其中的每个元素都包含一个介于-1和1之间的可能值。
我们的函数应该返回该序列最长子部分的大小,总和为零或更高。
示例
以下是代码-
const arr = [-1, -1, 0, 1, 1, -1, -1, -1];
const longestPositiveSum = (arr = []) => {
let sum = 0;
let maxslice = 0;
let length = arr.length;
const sumindex = [];
let marker = length * 2 + 1;
for(let i = 0; i < length * 2; i++){
sumindex[i] = marker;
}
for(let i = 0; i < arr.length; i++){
sum += arr[i];
if (sum >= 0)
maxslice = i + 1;
else if (sumindex[sum+length] != marker)
maxslice = Math.max(maxslice, i - sumindex[sum+length]);
else
sumindex[sum+length] = i;
};
return maxslice;
};
console.log(longestPositiveSum(arr));输出结果5
热门推荐
10 高兴的结婚祝福语简短
11 祝福语简短大全微信
12 新婚祝福语简短老同学
13 新年英文祝福语简短老师
14 女方回门宴简短祝福语
15 为朋友订婚祝福语简短
16 家庭新春聚餐祝福语简短
17 搬乔迁新居祝福语简短
18 小孩降生的祝福语简短