每天学习一点算法 2026/03/19
题目:子集
给你一个整数数组
nums,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
依然跟之前的题类似,还是看做一个树,每个节点的子节点有两种选择,选或者不选,然后递归遍历出所有的路径就行了
typescript
function subsets(nums: number[]): number[][] {
const resArr = []
function hepler (surplus: number[], res: number[]) {
if (surplus.length === 0) {
// 数字选择完毕,保存结果,回归上层
resArr.push(res)
return
}
const currentNums = [...surplus] // 不改动当前层的 剩余数字数组
const current = currentNums.shift() // 取出当前层选择的数字
// 不选
hepler(currentNums, [...res])
// 选
hepler(currentNums, [...res, current])
}
hepler(nums, [])
return resArr
};
题目来源:力扣(LeetCode)