1、有N个正整数组成成的一个序列,给定一个整数sum,求长度最长的连续子序列,使他们的和等于sum,返回次子序列的长度,如果没有满足要求的序列,返回-1
案例1:
输入
1,2,3,4,2
6
输出
3
解析:1,2,3和4,2两个序列均能满足要求,所以最长的连续序列为1,2,3,因此输出结果为3
function getLen(arr,target) {
if(target == 0) {
return -1;
}
let res = 0;
let left = 0;
let right = 0;
let sum = 0;
while(left < arr.length && right < arr.length) {
if(sum >= target) {
result = (sum == target) ? Math.max(result, right - left) : result;
sum = sum - arr[left];
left ++
} else {
sum += arr[right];
right ++;
}
}
result = (target == sum || target = sum - arr[left++]) ? Math.max(result, right - left) : result;
return result;
}