https://leetcode.com/problems/permutation-sequence/
这道题我是这样想的
按从小到大排列
如果n个数 最高位就有n种 每种开头还有(n-1)!种 那么k包含x个(n-1)! 就说明首尾就是[1,n]里第x+1小的
import math
class Solution:
# @param n, an integer
# @param k, an integer
# @return a string
def getPermutation(self, n, k):
k=k-1
array=[] #用来存k/(n-1)!的商 代表应该在剩余的数里选第几小的
solution=[] #用来存最后结果的每一位 不用数组直接字符串或者直接sequence得到的数据*10这样都行 习惯放到数组里了
sequence=[] #将1-n顺序排列 选第几大的就根据下表取 取完就删除 下次还可以取第几小的
for i in range(n):
array.append(0)
solution.append(0)
sequence.append(i+1)
j=n
i=0
while k>=1:
x=k/math.factorial(j-1)
k=k-x*math.factorial(j-1)
array[i]=x
j=j-1
i=i+1
#search the xth small number
for i in range(len(array)):
seq=array[i]
solution[i]=sequence[seq]
del sequence[seq]
numStr=''
for i in solution:
numStr=numStr+str(i)
return numStr