Skip to content

Commit 4678ea6

Browse files
committed
47. Permutations II
1 parent 5fdfcf0 commit 4678ea6

File tree

3 files changed

+107
-0
lines changed

3 files changed

+107
-0
lines changed

src/main/java/leetcode/_47_/Main.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
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+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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+
```

0 commit comments

Comments
 (0)