题目分析:
这一题是让求n个数字全排列中的第k个结果,一开始我想递归求出全排列并记录次数,到第k次停止,实现起来比较复杂,后来看到网上给出的思路发现全排列是有规律的:参考博客中写的很详细,推荐阅读,这里我只是将他的代码改写成python版本。
测试代码:
class Solution:
def getPermutation(self, n, k):
res, jcs = '', [1]
nums = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
k -= 1
for i in range(2, n + 1):
jcs.append(jcs[-1] * i)
for i in range(n):
jc = jcs[n - i - 2]
point = int(k / jc)
k %= jc
res += nums[point]
nums.pop(point)
return res
print(Solution().getPermutation(4, 17)) #提交时请删除该行