|
1 | | -<<<<<<< HEAD |
2 | | -package leetcode.dfsbacktracing; |
3 | | - |
4 | | -import java.util.ArrayList; |
5 | | -import java.util.HashSet; |
6 | | -import java.util.List; |
7 | | - |
8 | | -/** |
9 | | - * Created by fay on 2017/12/12. |
10 | | - * <p> |
11 | | - * Given a collection of numbers that might contain duplicates, return all possible unique permutations. |
12 | | - * For example, |
13 | | - * [1,1,2]have the following unique permutations: |
14 | | - * [1,1,2],[1,2,1], and[2,1,1]. |
15 | | - */ |
16 | | -public class Permutations2 { |
17 | | - public ArrayList<ArrayList<Integer>> permuteUnique(int[] num) { |
18 | | - HashSet<ArrayList<Integer>> res = new HashSet<>(); |
19 | | - int level = 0; |
20 | | - backtracking(num, level,num.length-1,res); |
21 | | - //Set转换成List |
22 | | - ArrayList<ArrayList<Integer>> result=new ArrayList<>(); |
23 | | - result.addAll(res); |
24 | | - return result; |
25 | | - } |
26 | | - private void backtracking(int[] num, int level, int n,HashSet<ArrayList<Integer>> result) { |
27 | | - if (level == n) { |
28 | | - ArrayList<Integer> res=new ArrayList<>(); |
29 | | - for(int i:num){ |
30 | | - res.add(i); |
31 | | - } |
32 | | - result.add(res); |
33 | | - return; |
34 | | - } |
35 | | - for (int i = level; i <= n; i++) { |
36 | | - if(i!=level&&num[i]==num[level]){ |
37 | | - continue; |
38 | | - } |
39 | | - swap(num, level, i); |
40 | | - backtracking(num, level + 1, n, result); |
41 | | - swap(num, level, i); |
42 | | - } |
43 | | - } |
44 | | - public void swap(int[] num, int i, int j) { |
45 | | - int temp = num[i]; |
46 | | - num[i] = num[j]; |
47 | | - num[j] = temp; |
48 | | - } |
49 | | - public static void main(String[] args) { |
50 | | - Permutations2 test = new Permutations2(); |
51 | | - ArrayList<ArrayList<Integer>> result = new ArrayList<>(); |
52 | | - int[] num = {1, 1, 2,2}; |
53 | | - /*java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList |
54 | | - List res=Arrays.asList(num); |
55 | | - result.add((ArrayList) res); |
56 | | - List res = Arrays.asList(num); |
57 | | - result.add(new ArrayList<Integer>(res));*/ |
58 | | - /* ArrayList<ArrayList<String>> stuff = new ArrayList<ArrayList<String>>(); |
59 | | - String[] titles = {"ticker", "grade", "score"}; |
60 | | - stuff.add(new ArrayList<String>(Arrays.asList(titles)));*/ |
61 | | - result=test.permuteUnique(num); |
62 | | - for (ArrayList<Integer> res : result) { |
63 | | - for (Integer i : res) { |
64 | | - System.out.print(i + " "); |
65 | | - } |
66 | | - System.out.println(); |
67 | | - } |
68 | | - } |
69 | | -} |
70 | | -======= |
| 1 | + |
71 | 2 | package leetcode.dfsbacktracing; |
72 | 3 |
|
73 | 4 | import java.util.ArrayList; |
@@ -135,4 +66,3 @@ public static void main(String[] args) { |
135 | 66 | } |
136 | 67 | } |
137 | 68 | } |
138 | | ->>>>>>> 66d83aa3e6ef68f1f21311bddb82a3035d08cb85 |
0 commit comments