最长连续子数列

有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

let str = '1,2,3,4,2'
let N = 6
function test(str){
    let arr = str.split(',')
    let left = 0
    let right = 0
    let Max = -1
    let sum = 0
    while (right<arr.length){
        if(sum<N){
            sum+=Number(arr[right])
        }else {
            if(sum===N){
                Max = Math.max(right-left,Max)
            }
            left = right
        }
        right ++
    }
    console.log(Max);
}
test(str)
机试题 文章被收录于专栏

某机试题,网上很少用js写的答案只有自己写了

全部评论

相关推荐

点赞 评论 收藏
分享
强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
兄弟们,实习都是在接各种api,该怎么包装简历
仁者伍敌:感觉我自己做小项目也是各种api啊,我要怎么包装简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务