题目:
Given a set of distinct integers, nums, return all possible subsets (the power set).
题目翻译:
给一串不同的数字,输出它们的子集
题解:
此题有一个较为简单的方法,即,用二进制串的方式去代表一个一个子集。例如对于[1,2,3],用一个长为3的列表arr去存储二进制串,由于[1,2,3]一共有8个子集,故用0-7对应的二进制串去表示每一个子集。
eg.
0——000——[]
1——001——[3]
2——010——[2]
3——011——[2,3]
4——100——[1]
5——101——[1,3]
6——110——[1,2]
7——111——[1,2,3]
代码解如下:
class Solution(object):
def subsets(self, nums):
result=[]
for num in range(2**len(nums)):
arr=change(num,len(nums))
temp=[]
for i in range(len(nums)):
if arr[i]:
temp.append(nums[i])
result.append(temp)
return result
#得到数字num对应的长为len(nums)的二进制串列表
def change(num,size):
arr=[0]*size
i=0
while num:
arr[i] = num % 2
num = num // 2
i=i+1
return arr
#提交时不需要交下面的代码,下面为测试代码
nums=[1,2,3]
result=Solution().subsets(nums)
print(result)
输出:
[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]