python 我在使用for循环查找最长递增子序列时缺少了什么

qvtsj1bj  于 2023-05-21  发布在  Python
关注(0)|答案(1)|浏览(137)

我想找到最长的递增子序列,而不使用动态编程或递归,只使用列表和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)

它运行不正常

xurqigkl

xurqigkl1#

我真的看不出你代码背后的想法是什么。如果代码不是很冗长,那么很难理解。这是真的,即使代码工作。如果它不起作用,你的想法就不可能被理解。
你为什么不简单地使用排序函数来排序你的列表。然后,您可以从列表的开头开始,检查下一项是否是最后一项+1。如果这不是真的,你可以保持这个系列的记录,并开始下一个系列的记录。
最后,你可以有一个所有系列的列表,并选择最长的。

相关问题