对于第一个数字,剩余共有(n-1)!中排列,因此第一个数字为k/(n-1)!,之后的数字依次类推
import math
class Solution(object):
def getPermutation(self, n, k):
"""
:type n: int
:type k: int
:rtype: str
"""
numbers = range(1, n+1)
res = ''
k -= 1
while n > 0:
n -= 1
num, k = divmod(k, math.factorial(n))
res += str(numbers[num])
numbers.remove(numbers[num])
return res
本文介绍了一种高效算法来求解第K个排列。通过递归地确定每个位置上的数字,该算法能快速找到从1到n的数字构成的所有可能排列中的第K个。文章还提供了一个Python实现示例。
1716

被折叠的 条评论
为什么被折叠?



