Нам нужно напечатать самую длинную последовательность номеров.
Ввод = [2,3,4,5,8,0]
Вывод= 3,[2,3,4,5]< /p>
Ввод=[2,3,4,5,8,0,10,9,8,7,6,5]
Вывод= 5,[10,9, 8,9,6,5]
Ниже приведен код, который я написал. Может кто-нибудь помочь мне с оптимизацией кода
У меня есть использовал 2 флага: flag1 относится к прямой последовательности, а flag2 — к обратной последовательности, учитывая приведенный ниже тестовый пример.
In = [2,3,4,3,2, 1]
Out = 3, [4,3,2,1]
Этот вопрос мне задали в одном из интервью, и мне потребовалось много времени, чтобы решить его. почти 50% моего времени на собеседовании, любые советы о том, как задавать такие вопросы быстрее, если они встречаются во время собеседования.
Вот мое решение, помогите мне оптимизировать его.
l=[2,3,4,3,2,1]
flag1=0
flag2=0
index=0
seq=0
seq_dict={}
n=len(l)
for i in range(n-1):
if (l+1==l[i+1]):
if (flag2==1):
index=i
seq_dict.update({seq:[index,flag1,flag2]})
seq=0
flag2=0
elif(flag1==0 and i==n-2):
index=i+1
flag1=1
seq+=1
seq_dict.update({seq:[index,flag1,flag2]})
flag1=1
seq+=1
elif (l-1==l[i+1]):
if (flag1==1):
index=i-1
seq_dict.update({seq:[index,flag1,flag2]})
seq=0
flag1=0
elif(flag2==1 and i==n-2):
index=i+1
flag2=1
seq+=1
seq_dict.update({seq:[index,flag1,flag2]})
flag2=1
seq+=1
else:
if(seq!=0 and (flag1==1 or flag2==1)):
index=i
seq_dict.update({seq:[index,flag1,flag2]})
seq=0
flag1=0
flag2=0
index=0
final=[]
m=max(seq_dict)
print(m)
end=seq_dict[m][0]
while(m>=0):
final.append(l[end-m])
m-=1
print(final)
Подробнее здесь: https://stackoverflow.com/questions/785 ... e-returned