Дан массив уникальных целых чисел nums
. Вернуть все возможные перестановки. Порядок ответа не важен.
Пример 1:
Ввод: nums = [1,2,3]
Вывод: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
Пример 2:
Ввод: nums = [0,1]
Вывод: [[0,1],[1,0]]
Для решения этой задачи мы можем использовать рекурсивный алгоритм. Мы можем начать с пустого списка и добавлять элементы из nums
по одному. Когда мы добавляем новый элемент, мы рекурсивно вызываем функцию для оставшихся элементов. Мы продолжаем этот процесс до тех пор, пока не закончатся элементы. Когда мы доходим до конца, мы добавляем текущий список в список результатов.
permute(nums)
, которая принимает массив nums
как аргумент и возвращает список всех возможных перестановок.permute(nums)
создайте пустой список res
для хранения всех возможных перестановок.dfs(path, nums, res)
, которая будет использоваться для построения перестановок рекурсивно. Она принимает три аргумента: path
- текущий путь, nums
- оставшиеся элементы, res
- список результатов.dfs(path, nums, res)
проверьте, если nums
пустой, добавьте текущий путь path
в список результатов res
.nums
не пустой, создайте цикл for
для перебора элементов в nums
.for
добавьте текущий элемент nums[i]
в path
.dfs(path, nums[:i]+nums[i+1:], res)
для оставшихся элементов.path
с помощью метода pop()
.