[英]Error in Longest Increasing Subsequence in Python
我試圖通過參考此處的視頻來實現Python中最長的遞增子序列 。
我想我做對了。 對我來說,代碼的空運行也很好。 但是輸出不正確。
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]]
任何幫助,將不勝感激!
這只是另一個參考問題。
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
這3條線是等效的,因此請選擇一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.