File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change 1+ //////////////////////////////////////////////////////////////////////////////
2+ // Backtracking
3+ // Time: O(n*2^n)
4+ // Space: O(2^n)
5+ //////////////////////////////////////////////////////////////////////////////
6+
7+ /**
8+ * @param {number[] } nums
9+ * @return {number[][] }
10+ */
11+ function subsetsWithDup ( nums ) {
12+
13+ nums . sort ( ( a , b ) => a - b ) ;
14+ const results = [ ] ;
15+ const result = [ ] ;
16+ getSubsets ( ) ;
17+ return results ;
18+
19+ /**
20+ * @param {number } start = `0`
21+ * @return {void }
22+ */
23+ function getSubsets ( start = 0 ) {
24+
25+ results . push ( result . slice ( ) ) ;
26+
27+ for ( let i = start ; i < nums . length ; ++ i ) {
28+ if ( i !== start && nums [ i ] === nums [ i - 1 ] ) {
29+ continue ;
30+ }
31+ result . push ( nums [ i ] ) ;
32+ getSubsets ( i + 1 ) ;
33+ result . pop ( ) ;
34+ }
35+ }
36+ }
You can’t perform that action at this time.
0 commit comments