最终结果resultList,中间结果tempList
(1)全排列问题的dfs函数中不需要加入index
组合问题和子集问题的dfs函数中需要加入index
(2) 如果想要dfs函数里面少一些传入的参数,可以把resultList和tempList设置为全局变量
比如这样:解决子集问题
class Solution
{
List result=new ArrayList();
List tempList=new ArrayList();
public static List<List<Integer>> subsets(int[] nums) {
//n个不同的元素,所以子集总共有2的n次方个
dfs(nums,0);
return result;
}
public static void dfs(int[] nums,int index)
{
//不需要满了才收集,加了一个元素就可以收集
result.add(new ArrayList(tempList));
for(int i=index;i<nums.length;i++)
{
tempList.add(nums[i]);
dfs(result,tempList,nums,i+1);//注意这里是i+1不是index+1
tempList.remove(tempList.size()-1);
}
}
}