python-3.x - 提高代码的执行时间,使其不会超时
问题描述
我有一段代码在某些情况下有效,但在某些情况下这需要更多时间并给出超时问题。有人可以帮忙改进吗?[编辑]:让我解释一下它是如何工作的函数接受一个列表作为输入函数返回一个列表作为输出如下: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
解决方案
最大的问题是您的代码搜索每个元素的最小值。预先对列表进行排序将使其更快。您还在列表的前面插入,这会强制移动列表中的每个元素,对于每个其他元素。为了解决这个问题,我只使用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
推荐阅读
- algorithm - 卡车在路上和加油站问题的动态规划算法
- firebase-authentication - 从 Firebase 返回空 JSON 字符串的动态链接
- rust - 为什么 std::rc::Rc 需要 PhantomData?
- python - 如何使用现有的和更新的类微调 keras 模型?
- ios - 设备方向更改时 UIWindow 不旋转
- java - 使用 volley 在列表视图中解析 JSON
- data-modeling - RavenDB 建模/索引:使用参考数据进行地址验证
- arrays - INJECT: NoMethodError: undefined method `<<' for :one:Symbol
- laravel - Datepicker JS 错误 tempus-dominus Laravel 5.8
- jwt - Jwt 策略后 ExecutionContext 中缺少用户