我想找到最长的递增子序列,而不使用动态编程或递归,只使用列表和for循环虽然它正常工作,但我遇到了这个问题,如果主序列是[10,20,17,18,19],那么它会给我[17,18,19,20]而不是[10,17,18,19],20]我很困惑写代码来解决这个问题,如果有人可以帮助我在这里。
list1 = [10,20,17,18,19]
dict1 = {}
for i in list1:
dict1[i] = [i]
for i in list1:
for j in list1[list1.index(i)::]:
if j > dict1[i][-1] and j:
dict1[i].append(j)
length_list = []
for i in dict1.values():
length_list.append(len(i))
for i in dict1.values():
if len(i) == max(length_list):
print(i)
它运行不正常
1条答案
按热度按时间xurqigkl1#
我真的看不出你代码背后的想法是什么。如果代码不是很冗长,那么很难理解。这是真的,即使代码工作。如果它不起作用,你的想法就不可能被理解。
你为什么不简单地使用排序函数来排序你的列表。然后,您可以从列表的开头开始,检查下一项是否是最后一项+1。如果这不是真的,你可以保持这个系列的记录,并开始下一个系列的记录。
最后,你可以有一个所有系列的列表,并选择最长的。