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

“123”

“132”

“213”

“231”

“312”

“321”

Given n and k, return the kth …


This content originally appeared on DEV Community and was authored by Abhishek Chaudhary

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!

SOLUTION:

class Solution:
    def nextPermutation(self, nums: List[int]) -> None:
        n = len(nums)
        i = n - 1
        while i > 0:
            if nums[i - 1] < nums[i]:
                break
            i -= 1
        if i == 0:
            nums.reverse()
            return
        mdiff = float('inf')
        closest = None
        for j in range(i, n):
            if nums[j] > nums[i - 1] and nums[j] - nums[i - 1] <= mdiff:
                mdiff = nums[j] - nums[i - 1]
                closest = j
        if closest:
            nums[i - 1], nums[closest] = nums[closest], nums[i - 1]
        for j in range(i, (i + n) // 2):
            nums[j], nums[n - j + i - 1] = nums[n - j + i - 1], nums[j]

    def getPermutation(self, n: int, k: int) -> str:
        nums = list(range(1, n + 1))
        for _ in range(k - 1):
            self.nextPermutation(nums)
        return "".join(map(str, nums))


This content originally appeared on DEV Community and was authored by Abhishek Chaudhary


Print Share Comment Cite Upload Translate Updates
APA

Abhishek Chaudhary | Sciencx (2022-06-16T13:30:39+00:00) Permutation Sequence. Retrieved from https://www.scien.cx/2022/06/16/permutation-sequence/

MLA
" » Permutation Sequence." Abhishek Chaudhary | Sciencx - Thursday June 16, 2022, https://www.scien.cx/2022/06/16/permutation-sequence/
HARVARD
Abhishek Chaudhary | Sciencx Thursday June 16, 2022 » Permutation Sequence., viewed ,<https://www.scien.cx/2022/06/16/permutation-sequence/>
VANCOUVER
Abhishek Chaudhary | Sciencx - » Permutation Sequence. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/06/16/permutation-sequence/
CHICAGO
" » Permutation Sequence." Abhishek Chaudhary | Sciencx - Accessed . https://www.scien.cx/2022/06/16/permutation-sequence/
IEEE
" » Permutation Sequence." Abhishek Chaudhary | Sciencx [Online]. Available: https://www.scien.cx/2022/06/16/permutation-sequence/. [Accessed: ]
rf:citation
» Permutation Sequence | Abhishek Chaudhary | Sciencx | https://www.scien.cx/2022/06/16/permutation-sequence/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.