给定一个不包含重复的数组,返回所有可能的排列。
时间: 2024-03-10 21:47:23 浏览: 81
php根据一个给定范围和步进生成数组的方法
这是一个经典的回溯算法问题,可以采用递归的方式实现。具体步骤如下:
1. 定义一个列表,用于存储当前已选的元素。
2. 遍历数组,对于每个未被选择的元素,将其加入列表中,并将其标记为已选择。
3. 递归调用函数,继续选择下一个未被选择的元素。
4. 当列表中的元素数量等于数组长度时,将当前列表中的元素加入结果列表中。
5. 回溯,将当前选择的元素从列表中移除,并将其标记为未选择。
下面是 Python 代码实现:
```python
def permute(nums):
res = []
visited = [False] * len(nums)
def backtrack(path):
if len(path) == len(nums):
res.append(path[:])
return
for i in range(len(nums)):
if not visited[i]:
visited[i] = True
path.append(nums[i])
backtrack(path)
path.pop()
visited[i] = False
backtrack([])
return res
```
给定输入 `[1,2,3]`,输出结果为 `[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]`。
阅读全文