给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
class Solution {
private List<List<Integer>> result;
public List<List<Integer>> permute(int[] num) {
result = new LinkedList<>();
if (num != null) {
permute(0, num);
}
return result;
}
private void permute(int i, int[] num) {
if (i == num.length) {
List<Integer> l = new ArrayList<>();
for (int n: num) {
l.add(n);
}
result.add(l);
}else {
for (int j = i; j < num.length; j++) {
swap(num, j, i);
permute(i + 1, num);
swap(num, j, i);
}
}
}
private void swap(int[] A, int x, int y) {
int tmp = A[x];
A[x] = A[y];
A[y] = tmp;
}
}