Skip to content

Commit ffc081d

Browse files
authored
Update Permutations II.java
1 parent 13fc282 commit ffc081d

File tree

1 file changed

+15
-24
lines changed

1 file changed

+15
-24
lines changed

Medium/Permutations II.java

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,25 @@
11
class Solution {
22
public List<List<Integer>> permuteUnique(int[] nums) {
3-
List<List<Integer>> ans = new ArrayList<>();
4-
if (nums.length == 0) {
5-
return ans;
6-
}
7-
List<Integer> curr = new ArrayList<>();
3+
List<List<Integer>> result = new ArrayList<>();
84
Arrays.sort(nums);
9-
helper(nums, ans, curr, new boolean[nums.length]);
10-
return ans;
5+
helper(nums, result, new ArrayList<>(), new boolean[nums.length]);
6+
return result;
117
}
12-
13-
private void helper(int[] nums, List<List<Integer>> ans, List<Integer> curr, boolean[] used) {
8+
9+
private void helper(int[] nums, List<List<Integer>> result, List<Integer> curr, boolean[] visited) {
1410
if (curr.size() == nums.length) {
15-
ans.add(new ArrayList<>(curr));
11+
result.add(new ArrayList<>(curr));
12+
return;
1613
}
17-
else {
18-
for (int i = 0; i < nums.length; i++) {
19-
if (used[i]) {
20-
continue;
21-
}
22-
if (i > 0 && nums[i - 1] == nums[i] && !used[i - 1]) {
23-
continue;
24-
}
25-
used[i] = true;
26-
curr.add(nums[i]);
27-
helper(nums, ans, curr, used);
28-
curr.remove(curr.size() - 1);
29-
used[i] = false;
14+
for (int i = 0; i < nums.length; i++) {
15+
if (visited[i] || (i > 0 && nums[i] == nums[i - 1] && !visited[i - 1])) {
16+
continue;
3017
}
18+
curr.add(nums[i]);
19+
visited[i] = true;
20+
helper(nums, result, curr, visited);
21+
curr.remove(curr.size() - 1);
22+
visited[i] = false;
3123
}
3224
}
3325
}
34-

0 commit comments

Comments
 (0)