1. 組合
給定兩個整數 n 和 k,返回範圍 [1, n] 中所有可能的 k 個數的組合。
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
def backtrack(start, path):
if len(path) == k:
result.append(path[:])
return
for i in range(start, n + 1):
path.append(i)
backtrack(i + 1, path)
path.pop()
result = []
backtrack(1, [])
return result
2. 子集
給定一個整數陣列 nums ,陣列中的元素 互不相同 。返回該陣列所有可能的
子集(冪集)。
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
result = []
path = []
def backtracking(nums, startIndex):
result.append(path[:])
for i in range(startIndex, len(nums)):
path.append(nums[i])
backtracking(nums, i + 1)
path.pop()
backtracking(nums, 0)
return result