算法

·

2 min read

·

- Views

46. 全排列

Copied

46. 全排列

Q:

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

思路

很经典的回溯入门级题目。 维护一个结果数组,进行深度优先遍历,首先思考搜索结束的条件是什么,很明显是当前路径长度已经够了就行(当然前提是路径里的值都得是有效的)。然后模拟一遍怎么找出每一个排列的

1 ⇒ 找了1以后 我们需要在剩下的数组中选择下一个数字 ⇒ 假如选2, 当前路径就是[1,2], 剩下只能选3 ⇒ 此时路径长度为3了 已经满足了一个条件了,所以回到上次选择的时候 选择另外的选择,也就是第三步的时候选3。

所以在搜索的时候,其实就是维护一个搜索的数组,不断在这个数组中选值拼接到路径上。 回溯的概念刚学习时会觉得很抽象,只能认真想一想递归的执行过程才能理解

Code