给定一个无重复数字的整数数组,求其所有的排列方式。
输入
输入是一个一维整数数组
输出
输出是一个二维数组,表示输入数组的所有排列方式
样例
标准输入 复制文本 |
[1,2,3] |
标准输出 复制文本 |
[[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]] |
提示
怎样输出所有的排列方式呢?对于每一个当前位置 i,我们可以将其于之后的任意位置交换,然后继续处理位置 i+1,直到处理到最后一位。为了防止我们每此遍历时都要新建一个子数组储存位置 i 之前已经交换好的数字,我们可以利用回溯法,只对原数组进行修改,在递归完成后再修改回来。 我们以样例[1,2,3]为例,按照这种方法,我们输出的数组顺序为[[1,2,3], [1,3,2], [2,1,3], [2,3,1],[3,1,2], [3,2,1]],可以看到所有的排列在这个算法中都被考虑到了