給你一個整數數組 nums ,數組中的元素 互不相同 。返回該數組所有可能的子集(冪集)。
解集 不能 包含重復的子集。你可以按 任意順序 返回解集。
示例 1:
輸入:nums = [1,2,3]
輸出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
示例 2:
輸入:nums = [0]
輸出:[[],[0]]
用二進制中的1來表示當前index的元素是否在子集中。例如,n = 3,a={5,2,9} 時對應的二進制
0-1二進制序列正好對應子集的索引。1表示取當前索引的值,0表示不取。用與運算來計算,二進制中當前位置是否是1。
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
ans = []
n = len(nums)
for mask in range(1<<n):
t = []
for i in range(n):
# 與運算,來判斷二進制序列中,當前位置是否是1
if (mask & (1<<i))!=0:
t.append(nums[i])
ans.append(t)
return ans