1. 格雷編碼
n 位格雷碼序列 是一個由 2n 個整陣列成的序列,其中:
- 每個整數都在範圍 [0, 2n - 1] 內(含 0 和 2n - 1)
- 第一個整數是 0
- 一個整數在序列中出現 不超過一次
- 每對 相鄰 整數的二進位制表示 恰好一位不同 ,且
- 第一個 和 最後一個 整數的二進位制表示 恰好一位不同
給定一個整數 n ,返回任一有效的 n 位格雷碼序列 。
class Solution:
def grayCode(self, n: int) -> List[int]:
res = [0]
for i in range(n):
for j in range(len(res) - 1, -1, -1):
res.append(res[j] | (1 << i))
return res
2. 子集 II
給定一個整數陣列 nums ,其中可能包含重複元素,請返回該陣列所有可能的 子集(冪集)。
class Solution:
def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
nums.sort()
res = []
def backtrack(start, subset):
res.append(subset[:])
for i in range(start, len(nums)):
if i > start and nums[i] == nums[i - 1]:
continue
subset.append(nums[i])
backtrack(i + 1, subset)
subset.pop()
backtrack(0, [])
return res