版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_36811967/article/details/87692792
说明:
给定 n 的范围是 [1, 9]。
给定 k 的范围是[1, n!]。
示例 1:
输入: n = 3, k = 3
输出: “213”
示例 2:
输入: n = 4, k = 9
输出: "2314"
主要思路是根据k值和n-1的阶乘求得最先一位的数,以此类推后面的:
class Solution:
def getPermutation(self, n, k):
"""
:type n: int
:type k: int
:rtype: str
"""
def get_n(n): # 求解n的阶乘
res = 1
for i in range(1, n+1):
res *= i
return res
ret, nums = '', list(map(str, list(range(1, n+1))))
for i in range(n, 0, -1):
res = get_n(i-1)
index = (k-1) // res # 找到第一位的位置
ret += nums.pop(index)
k -= res*index # 求后面剩余数的第k个
return ret