题目:
两个方法本质就是决策树的画法不同
方法一解析:
代码:
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
相关推荐
এ᭄画画的北北2 小时前
力扣-234.回文链表八股文领域大手子3 小时前
深入理解缓存淘汰策略:LRU 与 LFU 算法详解及 Java 实现__lost3 小时前
C++ 解决一个简单的图论问题 —— 最小生成树(以 Prim 算法为例)wuqingshun3141594 小时前
蓝桥杯 11. 打印大XBlossom.1185 小时前
量子网络:构建未来通信的超高速“高速公路”A林玖5 小时前
【机器学习】朴素贝叶斯六边形战士DONK5 小时前
神经网络基础[损失函数,bp算法,梯度下降算法 ]wuqingshun3141596 小时前
蓝桥杯 2. 确定字符串是否是另一个的排列小刘|6 小时前
JVM 自动内存管理小羊不会c++吗(黑客小羊)6 小时前
c++头文件知识