题目:
两个方法本质就是决策树的画法不同
方法一解析:
代码:
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
相关推荐
Wang's Blog16 分钟前
AI Agent白手起家63: LangGraph 人机交互——让人类介入 AI 工作流乐观勇敢坚强的老彭40 分钟前
C++ STL 常用容器的速查表北冥you鱼42 分钟前
深入解析 Go 中 sync.YAML.Unmarshal:如何将 YAML 数据填充到 Config 结构体星轨初途1 小时前
LeetCode 热题 100——day11 滑动窗口最大值gbase_lmax2 小时前
深度递归与广度递归(DFS,BFS)实现西柚研究生1234563 小时前
论文分析15:跨层特征交互的多尺度无人机小目标检测算法rannn_11110 小时前
【力扣hot100】链表专题|160、206、234、141、142数模竞赛Paid answer10 小时前
2026年华东杯数学建模B题医药物流安排问题解题全过程文档及程序不会代码的小猴11 小时前
21. 泛型编程上AI备案指南-满满12 小时前
大模型与算法备案全流程详解:从零到通过的完整指南

