60. 第k个排列
解法一:
class Solution:
def getPermutation(self, n: int, k: int) -> str:
nums = []
for i in range(1, n+1):
nums.append(str(i)) #['1','2','3',...,'n']
fact = [0]*n #阶乘
fact[0] = 1
for i in range(1, n):
fact[i] = i * fact[i-1]
k -= 1 #偏移
record = [] #记录
#n轮循环
for i in range(n, 0, -1):
ind = k // fact[i-1] #确定第i位
k = k % fact[i-1] #剩下的数
record.append(nums[ind])
nums.remove(nums[ind]) #移出
return ''.join(record)最后更新于