Я пытаюсь найти самую длинную увеличивающуюся последовательную подпоследовательность в списке.последовательная возрастающая подпоследовательность
пример: если у меня есть список: [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 else, должно быть arr2.append (temp [:]).. Еще раз спасибо! –