Skip to content

Latest commit

 

History

History
53 lines (38 loc) · 1.41 KB

78-subsets.md

File metadata and controls

53 lines (38 loc) · 1.41 KB

78. 子集 - medium

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

 

示例 1:

输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

示例 2:

输入:nums = [0]
输出:[[],[0]]

 

提示:

  • 1 <= nums.length <= 10
  • -10 <= nums[i] <= 10
  • nums 中的所有元素 互不相同

Solutions

1. 迭代

看了题解思路,使用 2 进制 1 表示取当前位,0 表示不取。假设数组为 [0, 1, 2] 总共有 000, 001, 010...111 种取法(2^n - 1)。

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        results = [] 
        n = len(nums)       
        for mask in range(1 << n):
            vs = []
            for i in range(n + 1):
                if mask >> i & 1:
                    vs.append(nums[i])
            results.append(vs)
            mask += 1
        return results