diff --git a/data_structures/arrays/permutations.py b/data_structures/arrays/permutations.py new file mode 100644 index 000000000..eb3f26517 --- /dev/null +++ b/data_structures/arrays/permutations.py @@ -0,0 +1,26 @@ +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)) + True + """ + result = [] + if len(nums) == 1: + return [nums.copy()] + for _ in range(len(nums)): + n = nums.pop(0) + permutations = permute(nums) + for perm in permutations: + perm.append(n) + result.extend(permutations) + nums.append(n) + return result + + +if __name__ == "__main__": + import doctest + + doctest.testmod()