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成神之路

版权声明:
作者:主机优惠
链接:https://www.techfm.club/p/7810.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>