我觉得这个题操作起来蛮复杂的,核心就是n个数的后i位共有i!种排列,所以我们可以挨个确定排列:
class Solution:
def getPermutation(self, n: int, k: int) -> str:
if n == 1: return '1'
import functools
@functools.lru_cache(None)
def FC(j):
if j == 0: return 1
else: return j*FC(j-1)
remain = list(range(1,n+1))
res = ''
k = k-1
while n > 1:
fc = FC(n-1)
num = k // fc
res += str(remain[num])
del remain[num]
n-=1
k = k % fc
res += str(remain[0])
return res