Python中的排序列表(另一种方式)

2024-05-23 21:07:38 发布

您现在位置:Python中文网/ 问答频道 /正文

所以问题是:

输入一个正整数数组,需要返回新数组中所有元素的和,条件是:ifArray[i] > Array[j],thenArray[i] = Array[i] - Array[j]。 示例:

[1,2,3] => [1,2,1] => [1,1,1] => output: 3

我的代码:

def solution(a):
    while max(a) != min(a):
        u = max(a)
        a[a.index(u)] = u - min(a) 
    return (a[0] * len(a))

但是这段代码非常慢,如何重构它以获得更好的性能?你知道吗


Tags: 代码元素示例outputdef数组min条件
1条回答
网友
1楼 · 发布于 2024-05-23 21:07:38

您实现的代码大致将Euclidean algorithm应用于一组数字。以下代码与您的代码相同,但效率更高:

from fractions import gcd

a = [1, 2, 3]
print reduce(gcd, a) * len(a) # 3

你的代码是否做了你想要它做的是另一回事。在python3.X中,reduce必须从functools导入。你知道吗

相关问题 更多 >