# 46.全排序
给定一个没有重复数字的序列,返回所有的排列。
实例:
输入: [1,1,2]
输出:
* // [1,2,3],
* // [1,3,2],
* // [2,1,3],
* // [2,3,1],
* // [3,1,2],
* // [3,2,1]
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
代码 :
public class Permute {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
dfs(res, nums, 0, nums.length);
return res;
}
public void dfs(List<List<Integer>> res, int[] num, int first, int last) {
if (first == last) {
List<Integer> temp=new ArrayList<>();
for (Integer integer : num) {
temp.add(integer);
}
res.add(temp);
}
for (int i = first; i < last; i++) {
int temp = num[first];
num[first] = num[i];
num[i] = temp;
dfs(res,num, first + 1, last);
int recover = num[first];
num[first] = num[i];
num[i] = recover;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29