gpt4 book ai didi

python - 给定一个按字典顺序排列的元素列表(即 ['a' 、 'b' 、 'c' 、 'd' ]),找出第 n 个排列 - 求解的平均时间?

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:10 27 4
gpt4 key购买 nike

我偶然发现了这个面试问题:

Given a list of elements in lexicographical order (i.e. ['a', 'b', 'c', 'd']), find the nth permutation

我自己试了一下,大约花了 30 分钟才解决。 (我最终得到了 ~8-9 行的 Python 解决方案)。只是好奇——“应该”解决这类问题需要多长时间?我是不是拖得太久了?

最佳答案

9 分钟,包括测试

import math

def nthperm(li, n):
n -= 1
s = len(li)
res = []
if math.factorial(s) <= n:
return None
for x in range(s-1,-1,-1):
f = math.factorial(x)
d = n / f
n -= d * f
res.append(li[d])
del(li[d])
return res

#now that's fast...
nthperm(range(40), 123456789012345678901234567890)

关于python - 给定一个按字典顺序排列的元素列表(即 ['a' 、 'b' 、 'c' 、 'd' ]),找出第 n 个排列 - 求解的平均时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6784148/

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