【发布时间】:2021-12-11 17:39:52
【问题描述】:
我需要在 Python 的上升序列中找到最长的连续子序列。
例如,如果我有A = [1, 2, 3, 5, 8, 9, 11, 13, 17, 18, 19, 20, 21, 25, 27, 28, 29, 30]
答案是 [17, 18, 19, 20, 21],因为它是最长的连续子序列,有 5 个数字(而 [1, 2, 3] 是 3 数字长,[27, 28, 29, 30] 是 4 数字长。)
我的代码陷入了死循环
num_list = [1, 2, 3, 5, 8, 9, 11, 13, 17, 18, 19, 20, 21, 23, 25, 26, 27]
longest_sequence = {}
longest_sequence_length = 1
for num in num_list:
sequence_length = 1
while True:
if (num + sequence_length) in num_list:
sequence_length += 1
else:
if sequence_length > longest_sequence_length:
longest_sequence_length_length = sequence_length
longest_sequence = {"start": num, "end": num + (sequence_length - 1)}
break
print(f"The longest sequence is {longest_sequence_length} numbers long"
f" and it's between {longest_sequence['start']} and {longest_sequence['end']}")
【问题讨论】:
-
在
while循环内我没有看到任何跳出循环的语句(如break、return)。 -
放中断,而不是放错位置的继续。现在它可以工作,但不能真正搜索。
标签: python list subsequence