题目链接
方法1
超时
列举所有结果
然后输出结果
class Solution:
def getPermutation(self, n: int, k: int) -> str:
nums=[str(i+1) for i in range(n)]
p=nums.copy()
while(len(p[0])!=n):
lt=[]
for i in p:
for h in nums:
if h not in i:
lt+=[i+h]
# lt+=[i+j for j in sorted(list(set(nums)-set(i)))]
p=lt.copy()
return p[k-1]
方法2
image.png
打表
根据k选择每一位应该出现的数字
class Solution:
def getPermutation(self, n: int, k: int) -> str:
k-=1
dabiao=[1]
nums=[str(i) for i in range(n+1)]
for i in range(n):
dabiao.append(dabiao[-1]*(i+1))
o=''
while(nums!=['0']):
div=dabiao[n-1]
shang=k//div
yushu=k%div
# print(shang,yushu,nums,dabiao,n,div)
o+=nums.pop(shang+1)
# dabiao.pop(shang+1)
k=yushu
n-=1
return o