题目描述:
- 有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
def find_max_sun(array, target):
"""
寻找最长自序
:param array:
:param target:
:return:
"""
lens = len(array)
left_point = 0
right_point = 1
max_lens = 0
while right_point < lens:
val = sum(array[left_point: right_point])
if val == target:
max_lens = max(max_lens, right_point - left_point)
left_point += 1
right_point += 1
elif val > target and left_point < right_point:
left_point += 1
elif val > target:
right_point += 1
else:
right_point += 1
return max_lens if max_lens else -1