[算法加油站12]子集
2026/6/4 1:13:36 网站建设 项目流程

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

示例 1:

输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
示例 2:

输入:nums = [0]
输出:[[],[0]]

🚀核心挑战:清楚回溯撤销的原理,会绘画递归搜索树帮助理解

🎈算法步骤
1、定义res=[]用来存放结果,path=[]选择的路径,nums选择的数组
2、开始函数递归函数的参数是def backtrack(path,strart):每次传入参数start要等与
i+1
.确保不会出现重复的情况,每次递归都要把当前路径里面已选择的数复制到结果
res
里面
3、最后进行回溯,开始进行撤销

完整Python代码

defsubsets(nums):res=[]defbacktrack(path,strart):res.append(path[:])foriinrange(strart,len(nums)):path.append(nums[i])backtrack(path,i+1)path.pop()backtrack([],0)returnres nums=[1,2,3]print(subsets(nums))

虽然很少,但是重要的是理解怎么撤销的这一步需要对函数递归有一定的理解,每一次backtrack的调用都是在调用栈上分配一份自己的局部变量:

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询