Python实现第k个全排列算法
全排列是组合数学中的一种排列方式,从 n 个不同元素中取出 m 个(m ≤ n)元素进行全排列。在 Python 中,我们可以用 itertools.permutations 函数来生成全排列。但是如果要在其中找到第 k 个排列,则需要使用另外一种算法。
算法思路:
- 首先将所有的元素从小到大排序;
- 对于求第 k 个排列,每次确定当前位置上的数是哪一个,确定了位置上的数之后,问题就转化为了在剩下的数中求第 k’ 个排列,其中 k’ = k % factorial(i), i 表示当前还未确定位置的元素个数;
- 重复 2 步骤直到所有位置都确定了。
下面是该算法的 Python 实现源代码:
import math
def getPermutation(n: int, k: int