这道题我觉得不是很难啊,还没手表难,区别在于这边list的传递需要不断的赋值,
当然这边用了回朔,,大神直接排列更6吧。。。
假设 是[1,2,3],本质上就是一个排列组合,[000] ,[001],[010]……
如果用回朔,我真的觉得不如手表,因为这边不需要任何剪枝…
但是速度稍差点吧
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> res = new LinkedList<>();
List<Integer> list=new LinkedList<Integer>();
dfs(nums.length,-1,list,res,nums);
return res;
}
public static void dfs(int depth,int index,List<Integer> list,List<List<Integer>> res,int[] nums)
{
if(index==(depth-1))
{ res.add(list);
return;
}
List<Integer> list1=new LinkedList<Integer>(list);
dfs(depth,index+1,list,res,nums);
List<Integer> list2=new LinkedList<Integer>(list);
list2.add(nums[index+1]);
// res.add(list2);
dfs(depth,index+1,list2,res,nums);
}
}