如何优化我为这个问题编写的以下代码?我能得到一些建议吗?
给定一个整数元素数组,找到最长子序列的长度,使得所有元素都是交替的。如果序列 {x1, x2, .. xn} 是交替序列,则其元素满足以下关系之一:
x1 < x2 > x3 < x4 > x5 < …. xn
或者
x1 > x2 < x3 > x4 < x5 > …. xn
输入:
8
10 22 9 33 49 50 31 60
其中:第一行表示数组中元素的数量。第二行代表数组元素。
输出:
6
说明:
子序列{10, 22, 9, 33, 31, 60}
的格式为x1 < x2 > x3 < x4 > x5 < x6
ie { 10 < 22 > 9 < 33 > 31 < 60 }
,它是该格式中最大的,该子序列的长度为6
,因此是输出6
。
n = int(input())
L = []
for e in input().split():
L.append(int(e))
count, i = 0, 0
flag = None
while i < (len(L) - 1):
for j in range(i+1, len(L)):
if count == 0 and flag is None:
if (L[i] < L[j]):
count+=1
flag = 1
i = j
break
elif (L[i] > L[j]):
count+=1
flag = 0
i = j
break
else:
i = j
else:
if (flag == 0) and (L[i] < L[j]):
count+=1
flag = 1
i = j
break
elif (flag == 1) and (L[i] > L[j]):
count+=1
flag = 0
i = j
break
else:
i = j
print(count+1)