46.全排列【回溯】
46.全排列
题目链接:https://leetcode-cn.com/problems/permutations/ 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
思路:
前面已经解决了77.组合问题、131.分割回文串和78.子集问题,接下来看一看排列问题。
相信这个排列问题就算是让你用for循环暴力把结果搜索出来,这个暴力也不是很好写。
以[1,2,3]为例,抽象成树形结构如下:
回溯三部曲:
* 递归函数参数**首先排列是有序的,也就是说[1,2] 和[2,1] 是两个集合,这和之前分析的子集以及组合所不同的地方**。 可以看出元素1在[1,2]中已经使用过了,但是在[2,1]中还要在使用一次1,所以处理排列问题就不用使用startIndex了。 但排列问题需要一个used数组,标记已经选择的元素,如图橘黄色部分所示:
代码如下:```Li
46.全排列【回溯】最先出现在Python成神之路。
共有 0 条评论