穷举vs暴搜vs深搜vs回溯vs剪枝专题一>子集
穷举vs暴搜vs深搜vs回溯vs剪枝专题一>子集
题目: 两个方法本质就是决策树的画法不同方法一解析: 代码: 代码语言:javascript代码运行次数:0运行复制class Solution {
private List<List<Integer>> ret;//返回结果
private List<Integer> path;//记录路径,注
穷举vs暴搜vs深搜vs回溯vs剪枝专题一>子集
题目:
两个方法本质就是决策树的画法不同
方法一解析:
代码:
代码语言:javascript代码运行次数:0运行复制class 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);
}
}
方法二解析:
代码:
代码语言:javascript代码运行次数:0运行复制 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;
}
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);//回复现场
}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-12-15,如有侵权请联系 cloudcommunity@tencent 删除intlistpath递归决策树 #感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-22 06:23:21
推荐阅读
留言与评论(共有 7 条评论) |
本站网友 私塾在线 | 21分钟前 发表 |
0); return ret; } private void dfs(int[] nums | |
本站网友 proven | 7分钟前 发表 |
原始发表:2024-12-15 | |
本站网友 audiodg | 24分钟前 发表 |
0); return ret; } //i表示选择到了那一层 private void dfs(int[] nums | |
本站网友 赛葵 | 16分钟前 发表 |
如有侵权请联系 cloudcommunity@tencent 删除前往查看intlistpath递归决策树 | |
本站网友 孕妇不能吃的十大水果 | 6分钟前 发表 |
i+1); path.remove(path.size()-1);//回复现场 } }本文参与 腾讯云自媒体同步曝光计划 | |
本站网友 湖南省军区医院 | 15分钟前 发表 |
如有侵权请联系 cloudcommunity@tencent 删除前往查看intlistpath递归决策树 |