1.题目描述
2.思路
3.代码实现
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> res=new ArrayList<>();
List<Integer> cur=new ArrayList<>();
//从索引0开始递归
backtracking(res,cur,nums,0);
return res;
}
// 回溯函数:用于构建所有子集,传入变量
private void backtracking(List<List<Integer>> res,List<Integer> cur,int[] nums,int start)
{
// 将当前子集添加到结果集
res.add(new ArrayList<>(cur));
// 遍历每个元素,尝试加入到当前子集
for(int i=start;i<nums.length;i++)
{
// 做选择,加入当前元素
cur.add(nums[i]); // 做选择,加入当前元素
递归处理下一个元素
backtracking(res,cur,nums,i+1);
// 撤销选择,回溯
cur.remove(cur.size() - 1); // 修改为撤销 cur 中的元素
}
}
}