题目:
两个方法本质就是决策树的画法不同
方法一解析:
代码:
javaclass Solution { private List<List<Integer>> ret;//返回结果 private List<Integer> path;//记录路径,注意返回现场 public List<List<Integer>> subsets(int[] nums) { path = new ArrayList<>(); ret = new ArrayList<>(); dfs(nums,0); return ret; } //i表示选择到了那一层 private void dfs(int[] nums, int indx){ //递归出口 if(indx == nums.length){ ret.add(new ArrayList<>(path)); return; } //选某个元素 path.add(nums[indx]); dfs(nums,indx+1); path.remove(path.size()-1);//回复现场 //不选某个元素 dfs(nums,indx+1); } }
方法二解析:
代码:
javaprivate List<List<Integer>> ret;//返回结果 private List<Integer> path;//记录路径 public List<List<Integer>> subsets(int[] nums) { path = new ArrayList<>(); ret = new ArrayList<>(); dfs(nums,0); return ret; } private void dfs(int[] nums, int pos){ ret.add(new ArrayList<>(path)); for(int i = pos; i < nums.length; i++){ path.add(nums[i]); //每一层只能往选过的元素,再往选 dfs(nums,i+1); path.remove(path.size()-1);//回复现场 } }
穷举vs暴搜vs深搜vs回溯vs剪枝专题一>子集
robin_suli2024-12-17 18:03
相关推荐
美团技术团队22 分钟前
LongCat-Flash:如何使用 SGLang 部署美团 Agentic 模型Fanxt_Ja5 小时前
【LeetCode】算法详解#15 ---环形链表II侃侃_天下5 小时前
最终的信号类茉莉玫瑰花茶5 小时前
算法 --- 字符串博笙困了5 小时前
AcWing学习——差分NAGNIP5 小时前
认识 Unsloth 框架:大模型高效微调的利器NAGNIP5 小时前
大模型微调框架之LLaMA Factoryechoarts5 小时前
Rayon Rust中的数据并行库入门教程Python技术极客5 小时前
一款超好用的 Python 交互式可视化工具,强烈推荐~徐小夕6 小时前
花了一天时间,开源了一套精美且支持复杂操作的表格编辑器tablejs