给定一个 没有重复 数字的序列返回其所有可能的全排列。
方案:使用DFS+剪枝
- 深度优先算法由递归实现,创建isVisited检查是否被使用过,减少迭代
- 加入列表部分由于支架add(isVisited)的話加进去的是指针,也就是后续迭代会改变值销毁后res就空了~因此采用了new的方法,忘记Arraylist有无clone之类的方法做的时候没找到。
//如果i位置的元素被没被访问过
- 时间复杂度:O(n!)
- 空间复杂度:O(n!)理论上给出的数组长度<9 所以isVisited这边的长度可以忽略主要是res可能存在n的