forked from alqamahjsr/Algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path78_Subsets.py
More file actions
41 lines (36 loc) · 1.22 KB
/
78_Subsets.py
File metadata and controls
41 lines (36 loc) · 1.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class Solution(object):
# TODO: Bit Manipulation
# def subsets(self, nums):
# """
# :type nums: List[int]
# :rtype: List[List[int]]
# """
# res = []
# nums.sort()
# for i in range(1 << len(nums)):
# tmp = []
# for j in range(len(nums)):
# if i & 1 << j: # if i >> j & 1:
# tmp.append(nums[j])
# res.append(tmp)
# return res
# Backtracking approach
def subsets(self, nums):
allSubsets = []
nums.sort()
self.generateAllUniqueSubsets(nums, [], 0, allSubsets)
return allSubsets
def generateAllUniqueSubsets(self, originalNums, runingSubset, runingIndex, allSubsets):
allSubsets.append(runingSubset)
for i in range(runingIndex, len(originalNums)):
choice = originalNums[i]
node = runingSubset + [choice]
print("runingSubset: ", runingSubset)
print("choice: ", [choice])
print("Node: ", node)
print("-------")
self.generateAllUniqueSubsets(originalNums, node, i + 1, allSubsets)
sol = Solution()
input = [1,2,3]
out = sol.subsets(input)
print('Res: ', out)