Skip to content

Commit 700f2be

Browse files
committed
Sync LeetCode submission Runtime - 2 ms (12.32%), Memory - 18.1 MB (7.43%)
1 parent b29f198 commit 700f2be

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

0078-subsets/solution.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
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

66
class 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

0 commit comments

Comments
 (0)