
回溯算法
Ealiser
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode第114题 二叉树展开为链表
算法 核心思想 代码 class Solution { public void flatten(TreeNode root) { if (root == null) return; List<TreeNode> temp = new ArrayList<>(); dfs(root,temp); for (int i = 1; i < temp.size(); ++i) { ..原创 2022-04-16 11:51:03 · 3041 阅读 · 0 评论 -
LeetCode第113题 路径总和II
算法 回溯和深度优先搜索 核心思想 二叉树很适合用深度优先搜索去做,简单快捷。 这道题值得注意点是必须从根到叶子,同时没必要减枝,减枝的条件也有点复杂。 代码 class Solution { List<List<Integer>> res = new LinkedList<>(); public List<List<Integer>> pathSum(TreeNode root, int targetSum) { .原创 2022-04-15 16:14:03 · 1886 阅读 · 0 评论 -
LeetCode第144.94.145题 二叉树的三种遍历
算法 回溯法、深度优先搜索 核心思想 三者在代码上的区别就是在哪里保存根的值。 代码 //先序遍历 class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new LinkedList<>(); if(root == null) return res; dfs(root,res); .原创 2022-04-11 14:05:23 · 1042 阅读 · 0 评论 -
LeetCode第22题 括号生成
算法 回溯法 核心思想 简单的回溯,这几天做了几个回溯的类型题,简单做个总结,不一定对,还需要验证: 使用回溯的题目,基本和二叉树和图有关系,使用的方法很多事深度优先遍历。对于二叉树的题目做好画好一个二叉树,做好模拟,想好减枝的条件,操作即可。 代码 class Solution { List<String> res = new LinkedList<>(); public List<String> generateParenthesis(int n).原创 2022-04-07 14:15:29 · 1191 阅读 · 0 评论 -
LeetCode第51题八皇后问题
算法 回溯 核心思想 八皇后问题是回溯的经典问题。首先建议把模板备好,照着模板开始写。 List<Value> result; void backtrack(路径,选择列表){ if(满足结束条件){ result.add(路径); return; } for(选择:选择列表){ 做选择; backtrack(路径,选择列表); 撤销选择; } } 此外,对于使用java做这个道题,需要考虑java的字符处理太复杂了,建议先使用数组,然后进行转换。另外U1S1,笔试碰到这种题大概率要GG,.原创 2022-04-05 16:07:21 · 2059 阅读 · 0 评论 -
LeetCode第46题 全排列
算法 回溯算法 核心思想 这是做的第一道回溯算法题目。回溯的主要是通过穷举解决组合问题,这种思想非常适合处理面试的问题。因为此方法虽然占有大量的时间复杂度,但是却能很快给出解答。给出一个回溯法的万能公式 List<Value> result; void backtrack(路径,选择列表){ if(满足结束条件){ result.add(路径); return; } for(选择:选择列表){ 做选择; backtrack(路径,选择列表); 撤销选择; } } 代码 class So.原创 2022-04-04 16:39:02 · 785 阅读 · 0 评论