【发布时间】:2014-08-03 14:52:46
【问题描述】:
我想要一个函数get_permutation,给定一个列表l和一个索引i,返回一个l的排列,这样排列对于所有大于i的@987654327都是唯一的@ 且低于 n!(其中 n = len(l))。
即get_permutation(l,i) != get_permutation(l,j) 如果i!=j 对于所有i,j s.t. 0 <= i and j < len(l)!)。
此外,此函数必须在O(n) 中运行。
例如,如果不是指数阶,这个函数将符合要求:
def get_permutation(l, i):
return list(itertools.permutations(l))[i]
有没有人能解决上述问题?
编辑:我想要排列来自索引而不是来自排列的索引
【问题讨论】:
-
您是否需要特定的排列顺序,或者您只是希望每个
i返回一个唯一且一致的排列? -
只是对于每个
i,您都会得到一个独特且一致的排列:我并不关心顺序 -
它怎么可能在
i在0和n!之间运行? -
@barakmanos 这就是重点,OP 不想生成所有排列并为其编制索引,而是确定
l的哪个排列将位于索引i处。
标签: python algorithm permutation