本文主要是介绍78.子集 0ms,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
经典回溯,推荐下代码随想录
的讲解,回溯我看的他的讲解,易懂
收集问题和分割、组合问题的不同,就是要在终止条件上面添加个,不然会漏掉自己
class Solution {List<List<Integer>> result = new ArrayList<>();LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> subsets(int[] nums) {if(nums.length==0){result.add(new ArrayList<>());return result;}dfs(nums , 0);return result;}private void dfs(int[] nums,int start){result.add(new ArrayList<>(path));// 收集⼦集,要放在终⽌添加的上⾯,否则会漏掉⾃⼰if(start == nums.length){return;}for(int i=start; i < nums.length;i++){path.add(nums[i]);dfs(nums, i+1);path.removeLast();}}
}
这篇关于78.子集 0ms的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!