我正在嘗試查找列表中最長的連續增加的子序列。連續增加的子序列
例如:如果我有一個列表:[1,2,3,0,2,3,5,6,7,1,4,5,6,9]
輸出應爲[0,2,3,5,6,7]
,因爲它是長於[1,2,3]
和[1,4,5,6,9]
我寫我的代碼,我可以打破我的名單成更小的列表(如上圖所示),但只有計算每個較小序列的長度。但我需要做的是輸出最長的子序列,而不是它的長度,因爲我似乎無法做到這一點(我不斷收到邏輯錯誤)的一些奇怪的原因。
所以這裏是我的代碼,這是我試圖實現它的一種方式,我面臨的問題是當temp
到arr2
時。請幫我解決這個問題,並建議一個替代和更有效的算法,我可以使用它?
arr = [1,2,3,0,2,3,5,6,7,1,4,5,6,9] #original list
arr2 = [] #empty list (2 dimension)
counter = 1
temp = [] #temporary list
for x,y in enumerate(arr):
if(x == 0):
temp.append(y) #append first value to temp
else:
if(arr[x] > arr[x-1]): #if value of x is greater than previous one:
counter += 1 #increase counter if condition met
temp.append(y) #append list value to temp
else: #if value of x is not greater than previous one:
print(temp)
arr2.append(temp) #append entire temp list to arr2
temp[:] = [] #clear the temp list
temp.append(y) #append the new lowest value to temp
counter = 1 #reset counter
print(arr2)
感謝您的幫助。但只是一個快速更正,是的,我確實需要將最後一個子序列附加到循環外部的arr2,但我還需要在最後一個else語句內創建一個列表副本,應該是arr2.append(temp [:] ).. 再次感謝! –