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[:])returnfor 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