题目描述:
有N个正整数组成的一个序列,给定一个整数sum
求长度最长的的连续子序列使他们的和等于sum
返回次子序列的长度,如果没有满足要求的序列 返回-1
备注:
输入序列仅由数字和英文逗号构成,数字之间采用英文逗号分割
序列长度 1<=N<=200,输入序列不考虑异常情况
由题目保证输入序列满足要求
示例
输入:
1,2,3,4,2
6
输出:
3
解析:
1,2,3和4,2两个序列均能满足要求,所以最长的连续序列为1,2,3 因此结果为3
输入:
1,2,3,4,2
20
输出:
-1
解释:
没有满足要求的子序列,返回-1
代码:
function longList(arr,target) {
if (target == 0) return -1;
let result = 0, left = 0, right = 0, sum = 0;
while(left < arr.length && right < arr.length) {
if (sum >= target) {
// 相等时更新 result
result = (sum == target) ? Math.max(result, right - left) : result;