[Leetcode]Permutation Sequence

来源:互联网 发布:血源诅咒dlc武器数据 编辑:程序博客网 时间:2024/05/21 22:51

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):

  1. "123"
  2. "132"
  3. "213"
  4. "231"
  5. "312"
  6. "321"

Given n and k, return the kth permutation sequence.

Note: Given n will be between 1 and 9 inclusive.

每个相同的起始元素对应(n-1)!个permutation,只要当前的k进行(n-1)!取余,得到的数字就是当前剩余数组的index,如此就可以得到对应的元素, 递推直到数组中没有元素结束~

class Solution:    # @return a string    def getPermutation(self, n, k):        factorial = 1; res = ""        for i in xrange(2, n):            factorial *= i        num = [i for i in xrange(1, n + 1)]        k -= 1        for i in reversed(xrange(n)):            res += str(num[k / factorial])            del num[k / factorial]            if i > 0:                k %= factorial                factorial /= i        return res


0 0
原创粉丝点击