---
# System prepended metadata

title: '#78 Subsets'
tags: [LeetCode, ' Top100']

---

---
title: "#78 Subsets"
tags: LeetCode, Top100
---
#78 Subsets
==

題目描述
--
Given a set of **distinct** integers, nums, return all possible subsets (the power set).

**Note**: The solution set must not contain duplicate subsets.

Example 1:
--
>Input: nums = [1,2,3]
Output:
[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

解題思維
--
利用bit的特性，找出不重複的子集合。


Using bit
--
```python=
class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        res = []
        n = len(nums)
        bits = bin(2 ** n-1)[2:]
        pointer = 0
        while bin(pointer)[2:] != bits:
            cur = bin(pointer)[2:].rjust(n, '0')
            thisSolution = []
            for i, c in enumerate(cur[::-1]):
                if c == '0':
                    continue
                thisSolution.append(nums[i])
            res.append(thisSolution)
            pointer += 1
        res.append(nums)
        return res

```