File tree Expand file tree Collapse file tree 1 file changed +16
-14
lines changed Expand file tree Collapse file tree 1 file changed +16
-14
lines changed Original file line number Diff line number Diff line change 1- # Approach 3 - Lexicographic (Binary Sorted) Subsets
1+ # Approach 2: Backtracking
22
3- # Time: O(N * 2^N )
4- # Space: O(N * 2^N)
3+ # Time: O(n * 2^n )
4+ # Space: O(n)
55
66class Solution :
77 def subsets (self , nums : List [int ]) -> List [List [int ]]:
8- n = len (nums )
9- output = []
10-
11- for i in range (2 ** n , 2 ** (n + 1 )):
12- # generate bitmask, from 0..00 to 1..11
13- bitmask = bin (i )[3 :]
14-
15- # append subset corresponding to that bitmask
16- output .append ([nums [j ] for j in range (n ) if bitmask [j ] == '1' ])
17-
18- return output
8+ self .output = []
9+ self .n , self .k = len (nums ), None
10+ for self .k in range (self .n + 1 ):
11+ self .backtrack (0 , [], nums )
12+ return self .output
13+
14+ def backtrack (self , first , curr , nums ):
15+ if len (curr ) == self .k :
16+ self .output .append (curr [:])
17+ for i in range (first , self .n ):
18+ curr .append (nums [i ])
19+ self .backtrack (i + 1 , curr , nums )
20+ curr .pop ()
1921
You can’t perform that action at this time.
0 commit comments