60. Permutation Sequence
Read the full problem statement on LeetCode.
Difficulty: hard Acceptance: 50% Topics: Math, Recursion
View full problem on LeetCode Reading material
Reference solution (spoiler · python)
# Time: O(n^2)
# Space: O(n)
import math
# Cantor ordering solution
class Solution(object):
def getPermutation(self, n, k):
"""
:type n: int
:type k: int
:rtype: str
"""
seq, k, fact = "", k - 1, math.factorial(n - 1)
perm = [i for i in xrange(1, n + 1)]
for i in reversed(xrange(n)):
curr = perm[k / fact]
seq += str(curr)
perm.remove(curr)
if i > 0:
k %= fact
fact /= i
return seq
Solution from kamyu104/LeetCode-Solutions · MIT
Similar questions