Skip to main content

Permutation Sequence - Video Solutions

HardMathRecursion

L18. K-th Permutation Sequence | Leetcode

take U forward
24:41297,477 views
10 video solutions available

Permutation Sequence - Video Solution

Watch 10 video solutions for Permutation Sequence, a hard level problem involving Math, Recursion. This walkthrough by take U forward has 297,477 views views. Want to try solving it yourself? Practice on FleetCode or read the detailed text solution.

Problem Statement

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 for n = 3:

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

Given n and k, return the kth permutation sequence.

 

Example 1:

Input: n = 3, k = 3
Output: "213"

Example 2:

Input: n = 4, k = 9
Output: "2314"

Example 3:

Input: n = 3, k = 1
Output: "123"

 

Constraints:

  • 1 <= n <= 9
  • 1 <= k <= n!
Read full problem with examples

Approach Overview

Problem Overview: Given n and k, return the k-th permutation of the numbers 1..n in lexicographic order. The challenge is to compute the exact permutation without generating all n! possibilities.

Approach 1: Recursive Backtracking (Traditional Approach) (Time: O(n! * n), Space: O(n))

This method generates permutations using classic recursion and backtracking. Start with an empty path and repeatedly pick an unused number from 1..n. Each recursive call adds a number to the permutation until the length reaches n. Every complete permutation is produced in lexicographic order if numbers are explored sequentially. Keep a counter and stop once the k-th permutation is reached. This approach is conceptually simple but extremely inefficient because it explores up to n! permutations even though only one result is required.

Approach 2: Factorial Number System and Decrement Method (Time: O(n^2), Space: O(n))

The optimized solution relies on a math observation about permutation groups. For n digits, each leading digit repeats for (n-1)! permutations. Compute factorial values and determine which block the k-th permutation belongs to. Maintain a list of available numbers. The index of the next digit is (k-1) / (n-1)!. Remove that number from the list, append it to the result, update k with the remainder, and repeat for the remaining digits. This effectively converts k into a factorial number system representation. Because removing elements from a list costs O(n), the overall complexity becomes O(n^2). The technique is a common combinatorics trick and often appears alongside backtracking problems as an optimized alternative.

Recommended for interviews: Interviewers expect the factorial-number-system approach. The brute-force backtracking method shows you understand permutation generation, but the mathematical indexing approach demonstrates stronger algorithmic insight and reduces the search from factorial time to quadratic time.

Complexity Analysis

ApproachTimeSpaceWhen to Use
Recursive Backtracking (Traditional)O(n! * n)O(n)Useful for understanding permutation generation or when all permutations are required.
Factorial Number System and Decrement MethodO(n^2)O(n)Best choice when only the k-th permutation is needed without generating all permutations.