File tree Expand file tree Collapse file tree 3 files changed +107
-0
lines changed
src/main/java/leetcode/_47_ Expand file tree Collapse file tree 3 files changed +107
-0
lines changed Original file line number Diff line number Diff line change
1
+ package leetcode ._47_ ;
2
+
3
+ import java .util .HashSet ;
4
+ import java .util .List ;
5
+
6
+ /**
7
+ * Created by zhangbo54 on 2019-03-04.
8
+ */
9
+ public class Main {
10
+ public static void main (String [] args ) {
11
+ Solution solution = new Solution ();
12
+ int [] nums = {1 , 1 , 2 };
13
+ System .out .println (solution .permuteUnique (nums ));
14
+ System .out .println (solution .permuteUnique (nums ).size ());
15
+ HashSet <List <Integer >> set = new HashSet <>(solution .permuteUnique (nums ));
16
+ System .out .println (set .size ());
17
+ }
18
+ }
19
+
Original file line number Diff line number Diff line change
1
+ package leetcode ._47_ ;
2
+
3
+ import java .util .ArrayList ;
4
+ import java .util .Arrays ;
5
+ import java .util .HashSet ;
6
+ import java .util .List ;
7
+ import java .util .Set ;
8
+
9
+ class Solution {
10
+ public List <List <Integer >> permuteUnique (int [] nums ) {
11
+ List <List <Integer >> lists = new ArrayList <>();
12
+ Set <List <Integer >> listSet = new HashSet <>();
13
+ if (nums .length == 0 ) {
14
+ return lists ;
15
+ }
16
+ if (nums .length == 1 ) {
17
+ List <Integer > item = new ArrayList <>();
18
+ item .add (nums [0 ]);
19
+ lists .add (item );
20
+ return lists ;
21
+ }
22
+ List <List <Integer >> permute = this .permuteUnique (Arrays .copyOfRange (nums , 1 , nums .length ));
23
+ for (List <Integer > integers : permute ) {
24
+ for (int i = 0 ; i <= integers .size (); i ++) {
25
+ ArrayList <Integer > integers1 = new ArrayList <>(integers );
26
+ integers1 .add (i , nums [0 ]);
27
+ if (!listSet .contains (integers1 )) {
28
+ lists .add (integers1 );
29
+ listSet .add (integers1 );
30
+ }
31
+ }
32
+ }
33
+ return lists ;
34
+ }
35
+ }
Original file line number Diff line number Diff line change
1
+ ### [ 47\. Permutations II] ( https://leetcode.com/problems/permutations-ii/ )
2
+
3
+ Difficulty: ** Medium**
4
+
5
+
6
+ Given a collection of numbers that might contain duplicates, return all possible unique permutations.
7
+
8
+ ** Example:**
9
+
10
+ ```
11
+ Input: [1,1,2]
12
+ Output:
13
+ [
14
+ [1,1,2],
15
+ [1,2,1],
16
+ [2,1,1]
17
+ ]
18
+ ```
19
+
20
+
21
+ #### Solution
22
+
23
+ Language: ** Java**
24
+
25
+ ``` java
26
+ class Solution {
27
+ public List<List<Integer > > permuteUnique (int [] nums ) {
28
+ List<List<Integer > > lists = new ArrayList<> ();
29
+ Set<List<Integer > > listSet = new HashSet<> ();
30
+ if (nums. length == 0 ) {
31
+ return lists;
32
+ }
33
+ if (nums. length == 1 ) {
34
+ List<Integer > item = new ArrayList<> ();
35
+ item. add(nums[0 ]);
36
+ lists. add(item);
37
+ return lists;
38
+ }
39
+ List<List<Integer > > permute = this . permuteUnique(Arrays . copyOfRange(nums, 1 , nums. length));
40
+ for (List<Integer > integers : permute) {
41
+ for (int i = 0 ; i <= integers. size(); i++ ) {
42
+ ArrayList<Integer > integers1 = new ArrayList<> (integers);
43
+ integers1. add(i, nums[0 ]);
44
+ if (! listSet. contains(integers1)) {
45
+ lists. add(integers1);
46
+ listSet. add(integers1);
47
+ }
48
+ }
49
+ }
50
+ return lists;
51
+ }
52
+ }
53
+ ```
You can’t perform that action at this time.
0 commit comments