Skip to content
21 changes: 20 additions & 1 deletion data_structures/arrays/permutations.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
def permute(nums: list[int]) -> list[list[int]]:
"""
Return all permutations.

>>> from itertools import permutations
>>> numbers= [1,2,3]
>>> all(list(nums) in permute(numbers) for nums in permutations(numbers))
Expand All @@ -20,7 +19,27 @@ def permute(nums: list[int]) -> list[list[int]]:
return result


def permute2(nums: list[int]) -> list[list[int]]:
def backtrack(first=0):
if first == n:
output.append(nums[:])
for i in range(first, n):
nums[first], nums[i] = nums[i], nums[first]
backtrack(first + 1)
nums[first], nums[i] = nums[i], nums[first]

n = len(nums)
output = []
backtrack()
return output

# return result


if __name__ == "__main__":
import doctest

# use res to print the data in permute2 function
res = permute2([1, 2, 3])
print(res)
doctest.testmod()