The set [1,2,3,…,n] contains a total of n! unique permutations.
By listing and labeling all of the permutations in order,
We get the following sequence (ie, for n = 3):
"123""132""213""231""312""321"
Given n and k, return the kth permutation sequence.
Note: Given n will be between 1 and 9 inclusive.
class Solution(object):
def getPermutation(self, n, k):
res = ''
nums = [0] * n
for i in xrange(n):
nums[i] = i + 1
while k > 1:
f = math.factorial(n-1)
if k % f == 0:
k -= 1
pos = k/f
res += str(nums[pos])
del(nums[pos])
nums = nums[::-1]
break
#print k,f,k/f
pos = k/f
res += str(nums[pos])
del(nums[pos])
k %= f
n -= 1
for i in nums:
res += str(i)
return res
第K个排列序列

本文介绍了一种算法,用于找出由1到n组成的全部n!个不同排列中的第k个排列序列。通过列举和标记所有可能的排列顺序,可以得到对于特定n值的所有可能的排列组合。文章提供了一个Python实现示例,展示了如何根据给定的n和k返回对应的排列序列。
6683

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



