思路
先想清楚本题所有可能情况:共2n 种, 因为每个数可以选可以不选。
回溯本质是在生成一颗二叉树(知不知道这玩意也无所谓),向左走是选中数字,向右走是不选中数字。
具体的,[1,2,3]的所有情况是如何被代码计算得到的?
1.二叉树的第一层代表选第一个数的状态,第二层代表选第二个数的状态以此类推。最终选出的结果是最后一层所对应的结果。
给定一个整数数组 nums,其中所有元素两两不同。从该数组中任意选取若干个元素(可以一个也不选),构成一个子集。请枚举 nums 的所有可能子集,并将它们作为结果返回。
返回结果中不能出现重复的子集;子集之间的排列顺序没有限制。
约束条件
nums 的长度为 n,则 1≤n≤10。nums 中的所有元素互不相同。输入包含一个参数:整数列表 nums,表示待处理的原始数组。该列表中的元素互不相同。
返回一个二维整数列表,其中每个内层列表代表 nums 的一个子集。空子集用空列表 [] 表示。返回结果中不能包含重复子集,子集的排列顺序不限。
输入
-3
输出
-3
说明
数组 nums=[−3] 中只有一个元素。所有子集为 [] 和 [−3]。
示例输出没有显示空子集,因此只输出非空子集对应的一行 −3。
输入
4 -1
输出
4 -1
4
-1
说明
数组 nums=[4,−1] 中有两个元素,因此所有子集共有 22=4 个。
示例输出没有显示空子集,列出的非空子集依次为 [4,−1]、[4] 和 [−1]。
输入
-2 0 5
输出
-2 0 5
-2 0
-2 5
-2
0 5
0
5
说明
数组 nums=[−2,0,5] 中有三个元素,因此所有子集共有 23=8 个。
示例输出没有显示空子集,列出的非空子集依次为 [−2,0,5]、[−2,0]、[−2,5]、[−2]、[0,5]、[0] 和 [5]。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册