在某些情况下,我有一段有效的代码,但是在某些情况下,这会花费更多的时间并导致超时。请有人帮助改善此问题吗? [编辑]:让我解释一下它是如何工作的 函数接受列表作为输入 函数返回一个列表作为输出,如下所示: 1.最小的列表应该在中间 2.下一个最小的数字应该附加在列表的末尾 3.下一个最小的数字应该在列表的开头 4.下一个最小的数字应该附加在列表的末尾 5.下一个最小的数字应该附加在列表的开头 4.继续...除非我们扫描所有输入列表
def pendulum(values):
result=[]
while(len(values)):
min_num=min(values)
result.insert(0,min_num)
values.remove(min_num)
if len(values)>0:
min_num=min(values)
result.insert(len(result),min_num)
values.remove(min_num)
return result
答案 0 :(得分:0)
最大的问题是您的代码为每个元素搜索最少一次。对列表进行预排序将使其更快。您还将插入列表的前面,这将强制移动列表中的每个其他元素。为了解决这个问题,我只使用append
,然后反转列表的前半部分。
def pendulum(values):
front = []
back = []
next_goes_to_front = True
for value in sorted(values):
if next_goes_to_front:
front.append(value)
else:
back.append(value)
next_goes_to_front = not next_goes_to_front
return list(reversed(front)) + back