Python中最长递增子序列出错

2024-10-04 01:23:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Pythonby refering the video here中实现最长的递增子序列。你知道吗

我想我做对了。对我来说,代码的试运行也很好。但是输出不正确。你知道吗

d = [3, 2, 6, 4, 5, 1]
l = []
l.append([d[0]])

for i in range(1, len(d)):
    l.append([])
    for j in range(0, i):
        if d[j] < d[i] and len(l[i]) < len(l[j]) + 1:
            l[i] = l[j]
    l[i].append(d[i])

print(l)

预期输出:[[3], [2], [2, 6], [2, 4], [2, 4, 5], [1]]

实际输出:[[3], [2, 6, 4, 5], [2, 6, 4, 5], [2, 6, 4, 5], [2, 6, 4, 5], [1]]

任何帮助都将不胜感激!你知道吗


Tags: andthe代码inforlenifhere
1条回答
网友
1楼 · 发布于 2024-10-04 01:23:38

这只是另一个参考问题。你知道吗

for i in range(1, len(d)):
    l.append([])
    for j in range(0, i):
        if d[j] < d[i] and len(l[i]) < len(l[j]) + 1:
            l[i] = l[j]
    l[i].append(d[i])

请注意行l[i] = l[j],它使l[i]l[j]的列表相同,因此当您稍后修改l[i]时,l[j]也会被修改。您可能需要一份副本:

l[i] = l[j][:]
l[i] = list(l[j])
l[i] = l[j].copy()  # Python 3.3 or up

这三条线是相等的,所以选择一个你喜欢的。你知道吗

相关问题 更多 >