class Solution(object):
ans=""
def getPermutation(self, n, k):
"""
:type n: int
:type k: int
:rtype: str
"""
nums=range(1,n+1)
ans=[]
self.solve(nums,k)
return self.ans
def solve(self,nums,k):
if k<=0:
for i in range(len(nums)-1,-1,-1):
self.ans+=chr(nums[i]+ord('0'))
return
Len=len(nums)
total=self.nMulti(Len)
one=total/Len
p=(k-1)/one
print one,p
self.ans+=chr(nums[p]+ord('0'))
print self.ans
k%=one
del nums[p]
self.solve(nums,k)
def nMulti(self,n):
if n==1:return 1
return n*self.nMulti(n-1)
本文介绍了一个求解第k个排列的算法实现。通过递归的方式,结合阶乘计算,逐步确定目标排列的每一位数字,最终形成指定顺序的排列字符串。该算法适用于数学组合问题,特别适合于面试中快速解决问题。
3068

被折叠的 条评论
为什么被折叠?



