我想根据a1<=a2>=a3<=a4>=a5<=a6.....an
输入:[a1,...,an](n个数字,不按顺序排列)
输出:ai1 <= ai2> = ai3 <= ai4> = ai5 <= ai6 ....
写代码输入:[a1,...,an](n个数字,不按顺序)返回ai1 <= ai2> = ai3 <= ai4> = ai5 <= ai6 ....
验证代码(测试用例)
输入列表= [1,4,7,9,1,3,5,10,11] 预期结果之一如下
输出= 1,9,7,10,4,5,1,11,3
我尝试了以下代码:
l =[1,4,7,9,1,3,5,10,11]
s=[]
for i in range(0,len(l)-1):
if i%2 ==0:
if l[i]<= l[i+1]:
s.append(l[i])
else:
if l[i] >= l[i+1]:
s.append(l[i])
print(s)
输出如下:
[1, 7, 9, 1, 5]
答案 0 :(得分:0)
输出中的第一件事,对于给定的测试用例,如何获得输出似乎没有逻辑。有许多可能的结果,并且测试用例的输出只是一种情况。您需要生成所有可能的结果还是任何一个都足够?
如果仅一个就足够了,下面的代码就可以正常工作。
l =[1,4,7,9,1,3,5,10,11]
l.sort() # sort the array
s=[]
for i in range(len(l)//2):
s.append(l[i]) # append some small value
s.append(l[-i -1]) # append some large value
if len(l)%2:
s.append(l[len(l)//2]) # for array with odd length
print(s)
>>> [1, 11, 1, 10, 3, 9, 4, 7, 5]
此代码不会产生测试用例输出,但会以O(len(l))时间复杂度生成有效的输出。