题目描述:
有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;
sum = sum - arr[left];// 移动左指针,并更新sum
left++
} else {
sum += arr[right];// 最后一个数需要跳出循环后计算
right

给定一个包含正整数的序列,找到和为特定值的最长连续子序列的长度。若不存在满足条件的子序列,返回-1。例如,输入序列1,2,3,4,2和目标和6时,最长连续子序列1,2,3的长度为3;输入序列1,2,3,4,2和目标和20时,返回-1。提供的代码中存在一处逻辑问题,需要在循环结束后进行额外判断以确定最长子序列长度。"
6451378,197260,Unicode字符大全:基本多文种平面详解,"['字符编码', 'Unicode BMP', '拉丁字母', '扩展区域', '音标']
最低0.47元/天 解锁文章
4138

被折叠的 条评论
为什么被折叠?



