@@ -7,26 +7,29 @@ public List<List<Integer>> permuteUnique(int[] nums) {
7
7
Arrays .sort (nums );
8
8
9
9
List <List <Integer >> result = new ArrayList <>();
10
- boolean [] usedElements = new boolean [ nums . length ];
11
- dfs (nums , usedElements , new ArrayList <>(), result );
10
+
11
+ helper (nums , result , new ArrayList <>(), new boolean [ nums . length ] );
12
12
return result ;
13
13
}
14
14
15
- private void dfs (int [] nums , boolean [] usedElements , List <Integer > tempResult , List <List < Integer >> result ) {
16
- if (tempResult .size () == nums .length ) {
17
- result .add (new ArrayList <>(tempResult ));
15
+ private void helper (int [] nums , List <List < Integer >> result , List <Integer > temp , boolean [] used ) {
16
+ if (temp .size () == nums .length ) {
17
+ result .add (new ArrayList <>(temp ));
18
18
return ;
19
19
}
20
20
21
21
for (int i = 0 ; i < nums .length ; i ++) {
22
- if (usedElements [i ] || i > 0 && nums [i ] == nums [i - 1 ] && !usedElements [i - 1 ]) {
22
+ if (used [i ] || i > 0 && nums [i ] == nums [i - 1 ] && !used [i - 1 ]) {
23
23
continue ;
24
24
}
25
- usedElements [i ] = true ;
26
- tempResult .add (nums [i ]);
27
- dfs (nums , usedElements , tempResult , result );
28
- usedElements [i ] = false ;
29
- tempResult .remove (tempResult .size () - 1 );
25
+
26
+ used [i ] = true ;
27
+ temp .add (nums [i ]);
28
+
29
+ helper (nums , result , temp , used );
30
+
31
+ used [i ] = false ;
32
+ temp .remove (temp .size () - 1 );
30
33
}
31
34
}
32
- }
35
+ }
0 commit comments