#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Permutation Sequence.
The set [1,2,3,…,n] contains a total of n! unique permutations.
By listing and labeling all of the permutations in order,
We get the following sequence (ie, for n = 3):
"123"
"132"
"213"
"231"
"312"
"321"
Given n and k, return the kth permutation sequence.
Note: Given n will be between 1 and 9 inclusive.
根据排列组合可得.
k/(n-1)!可确定第一个数字;
k = k%(n-1)!,k = k%(n-2)!可确定第二个数字
以此类推...
'''
class Solution(object):
def getPermutation(self, n, k):
"""
:type n: int
:type k: int
:rtype: str
"""
total = 1
for i in range(2,n+1):
total *= i
if k > total:
return ''
k -= 1 #因为0是第一个
num = range(1,n + 1)
ret = []
for i in range(n,0,-1):
total = total/i #(n-1)!
tmp = k/total
k %= total
ret.append(str(num[tmp]))
num.pop(tmp)
return ''.join(ret)
if __name__ == "__main__":
s = Solution()
print s.getPermutation(3,1)
print s.getPermutation(3,2)
print s.getPermutation(3,3)
print s.getPermutation(3,4)
print s.getPermutation(3,5)
print s.getPermutation(3,6)
71 leetcode - Permutation Sequence
最新推荐文章于 2024-09-16 06:54:08 发布