gpt4 book ai didi

python - 在python中以钟摆排列打印数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:49:45 24 4
gpt4 key购买 nike

我应该打印钟摆排列的数组。对于某些输出,我的回答是正确的,但对于某些输出是错误的。为什么会这样?

test_case = int(input())
for i in range(0, test_case):
n = int(input())
arr = [int(i) for i in input().split()]
arr.sort()
arr1 = [0] * n
mid = int((n - 1) / 2)
arr1[mid] = arr[0]
i = 1
j = 1
for i in range(1, mid + 1):
arr1[mid + i] = arr[j]
j += 1
arr1[mid - i] = arr[j]
j += 1
if (int(n % 2) == 0):
arr1[mid + i] = arr[j]

print(' '.join(map(str, arr1)))

这里我尝试了 2 个测试用例。对于第一个测试用例,我的输出是正确的,但对于第二个测试用例,一个大小为 8 的数组,我的输出是错误的。

2 #no. of test cases
5 # size of 1st array
4 1 3 2 5 #1st Input
5 3 1 2 4 # correct output
8 #size of 2nd array
539 161 985 856 166 29 726 590 #2nd input
856 590 166 29 161 539 985 0 # Wrong output

第二个测试用例的预期输出是:

856 590 166 29 161 539 726 985

最佳答案

为什么不只是这个:

lst = [539, 161, 985, 856, 166, 29, 726, 590]

def pendulum(lst):
srt = sorted(lst)
return list(reversed(srt[0::2])) + srt[1::2]

ret = pendulum(lst)
# [856, 590, 166, 29, 161, 539, 726, 985]

对列表进行排序,然后取出所有其他元素并将其组装到新列表中。

请注意,该函数接受列表并返回一个列表;您可能需要先将您的字符串拆分为一个列表 ( lst = [int(i) for i in input().split()] ),您可能希望在最后转换结果: strg = ' '.join(str(i) for i in ret) .


在你的代码中如果n = 8你会得到mid = 3 ; i范围从 13因此 mid+1 <= 6 ;你永远不会设置 arr1[7] - 数组中的最后一个条目将保留为 0如果你输入的长度是偶数。

关于python - 在python中以钟摆排列打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56683985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com