题目描述:
有N个正整数组成的一个序列,给定一个整数sum
求长度最长的的连续子序列使他们的和等于sum
返回次子序列的长度,如果没有满足要求的序列 返回-1
备注:
输入序列仅由数字和英文逗号构成,数字之间采用英文逗号分割
序列长度 1<=N<=200,输入序列不考虑异常情况
由题目保证输入序列满足要求
示例
1.输入:
1,2,3,4,2
6
输出:3
解析:1,2,3和4,2两个序列均能满足要求,所以最长的连续序列为1,2,3 因此结果为3
2.输入:
1,2,3,4,2
20
输出:-1
解释:没有满足要求的子序列,返回-1
#解题想法:连续子序列,所以不能排序,从头开始计算,如果与目标值相等,则记录
最后对记录结果按长度排序
l=[1,2,3,4,2,3,3,1,4,1]
k=6
res=[]
for i in range(0,len(l)):
sum=0
j=i
while j<len(l):
sum+=l[j]
j+=1
if sum==k:
tmp=l[i:j]
res.append(tmp)
if sum>k:
break
if len(res)==0:
print(-1)
else:
tmp=sorted(res,key=len,reverse=True)
print(len(tmp[0]))