Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8004fe7

Browse files
author
王俊超
committed
commit
1 parent 2d7be6b commit 8004fe7

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

.idea/modules.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import java.util.ArrayList;
2+
import java.util.Arrays;
3+
import java.util.List;
4+
5+
/**
6+
* @author: wangjunchao(王俊超)
7+
* @time: 2018-09-28 15:29
8+
**/
9+
public class Solution {
10+
11+
public List<List<Integer>> permuteUnique(int[] nums) {
12+
List<List<Integer>> res = new ArrayList<>();
13+
14+
if (nums == null || nums.length == 0){
15+
return res;
16+
}
17+
18+
boolean[] used = new boolean[nums.length];
19+
List<Integer> list = new ArrayList<>();
20+
21+
Arrays.sort(nums);
22+
23+
permuteUnique(nums, used, list, res);
24+
return res;
25+
}
26+
27+
private void permuteUnique(int[] nums, boolean[] used, List<Integer> list, List<List<Integer>> res) {
28+
if (list.size() == nums.length) {
29+
res.add(new ArrayList<>(list));
30+
return;
31+
}
32+
33+
for (int i = 0; i < nums.length; i++) {
34+
// 第i个数值已经被使用过
35+
if (used[i]) {
36+
continue;
37+
}
38+
39+
// 第不个字符与前一个字符相等,并且第i-1个字符没有使用,说明此次不应该交换
40+
if (i > 0 && nums[i - 1] == nums[i] && !used[i - 1]) {
41+
continue;
42+
}
43+
44+
// 标记第i个字符已经被使用
45+
used[i] = true;
46+
// 添加到临时结果中
47+
list.add(nums[i]);
48+
// 下一次处理
49+
permuteUnique(nums, used, list, res);
50+
// 现场还原
51+
used[i] = false;
52+
list.remove(list.size() - 1);
53+
}
54+
}
55+
}

0 commit comments

Comments
 (0)