<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dragonccl的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dragonccl</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dragonccl]]></copyright><item><title><![CDATA[代码随想录算法训练营第30天|32. 重新安排行程，51. N 皇后，37. 解数独]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132557667</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132557667</guid><author>dragonccl</author><pubDate>Tue, 29 Aug 2023 12:27:02 +0800</pubDate><description><![CDATA[做这道题之前需要对图论有一定了解，那个链式建立的图表，一定要很清晰，然后这段代码中使用unordered_map<string, map<string, int>> 这种数据结构来代表图的这种链表还有防止闭环导致的无限循环，很巧妙。另一种有效的行程是 ["JFK","SFO","ATL","JFK","ATL","SFO"] ，但是它字典排序更大更靠后。另外一点需要说明的是，在map里first是按字典顺序存储的，这个结合这段代码相信就可以很好理解本题了。如上图所示，4 皇后问题存在两个不同的解法。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第29天|491. 递增子序列]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132450604</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132450604</guid><author>dragonccl</author><pubDate>Wed, 23 Aug 2023 14:06:56 +0800</pubDate><description><![CDATA[看上去这两段代码逻辑上一模一样，但是其实我们忘了一个点，就是path为空的时候我们没有做检查,是否在used里面。数组中可能含有重复元素，如出现两个整数相等，也可以视作递增序列的一种特殊情况。，找出并返回所有该数组中不同的递增子序列，递增子序列中。给定一个可包含重复数字的序列。给定一个不含重复数字的数组。返回所有不重复的全排列。下面给出一个错误代码。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第28天|93. 复原 IP 地址]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132439467</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132439467</guid><author>dragonccl</author><pubDate>Wed, 23 Aug 2023 00:14:41 +0800</pubDate><description><![CDATA[2. 学习技术方面的：（计算机方面借鉴）学一门技术要考虑，用这个技术栈，你能做些什么，不能一股脑光学，只会浪费大量时间，而且我觉得学习效果不一定比实战派效率高（有待验证）；不是自己要学习多少，而是尝试去明白学习这些东西是为了什么，用这些东西又可以做些什么。，其中可能包含重复元素，请你返回该数组所有可能的子集（幂集）。代码随想录上有用bool数组去重的，可以借鉴一下；，用以表示一个 IP 地址，返回所有可能的。返回的解集中，子集可以按。返回该数组所有可能的子集（幂集）。，这些地址可以通过在。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第28天|39. 组合总和,40. 组合总和 II，131. 分割回文串]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132395320</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132395320</guid><author>dragonccl</author><pubDate>Sun, 20 Aug 2023 20:13:11 +0800</pubDate><description><![CDATA[2 和 3 可以形成一组候选，2 + 2 + 3 = 7。注意 2 可以使用多次。如果至少一个数字的被选数量不同，则两种组合是不同的。中的每个数字在每个组合中只能使用。7 也是一个候选， 7 = 7。，并以列表形式返回。中可以使数字和为目标数。对于给定的输入，保证和为。给定一个候选人编号的集合。解集不能包含重复的组合。中所有可以使数字和为。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第24天|216. 组合总和 III,17. 电话号码的字母组合]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132390109</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132390109</guid><author>dragonccl</author><pubDate>Sun, 20 Aug 2023 11:55:29 +0800</pubDate><description><![CDATA[在[1,9]范围内使用4个不同的数字，我们可以得到的最小和是1+2+3+4 = 10，因为10 > 1，没有有效的组合。给出数字到字母的映射如下（与电话按键相同）。注意 1 不对应任何字母。该列表不能包含相同的组合两次，组合可以以任何顺序返回。的字符串，返回所有它能表示的字母组合。所有可能的有效组合的列表。没有其他符合的组合了。没有其他符合的组合了。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第24天回溯|77. 组合]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132389985</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132389985</guid><author>dragonccl</author><pubDate>Sun, 20 Aug 2023 11:19:43 +0800</pubDate><description><![CDATA[回溯算法都拥有一定的模版；]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第23天|669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132384981</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132384981</guid><author>dragonccl</author><pubDate>Sat, 19 Aug 2023 23:47:10 +0800</pubDate><description><![CDATA[改变保留在树中的元素的相对结构 (即，如果没有被移除，原有的父代子代关系都应当保留)。树的根节点，该树的节点值各不相同，请你将其转换为累加树（Greater Sum Tree），使每个节点。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意，根节点可能会根据给定的边界发生改变。二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。通过修剪二叉搜索树，使得所有节点的值在。给你二叉搜索树的根节点。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第22天|235. 二叉搜索树的最近公共祖先,701. 二叉搜索树中的插入操作]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132379438</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132379438</guid><author>dragonccl</author><pubDate>Sat, 19 Aug 2023 20:34:28 +0800</pubDate><description><![CDATA[中最近公共祖先的定义为：“对于有根树 T 的两个结点 p、q，最近公共祖先表示为一个结点 x，满足 x 是 p、q 的祖先且 x 的深度尽可能大（例如，给定如下二叉搜索树:  root = [6,2,8,0,4,7,9,null,null,3,5]思路：从根节点开始搜索，if(r->val>p->val&&r->val>q->val)就往左滑，一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。，将值插入二叉搜索树。另一个正确答案是 [5,2,6,null,4,null,7]。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第21天|530. 二叉搜索树的最小绝对差，501. 二叉搜索树中的众数,236. 二叉树的最近公共祖先]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132331097</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132331097</guid><author>dragonccl</author><pubDate>Sat, 19 Aug 2023 13:42:03 +0800</pubDate><description><![CDATA[中最近公共祖先的定义为：“对于有根树 T 的两个节点 p、q，最近公共祖先表示为一个节点 x，满足 x 是 p、q 的祖先且 x 的深度尽可能大（（假设由递归产生的隐式调用栈的开销不被计算在内）（假设由递归产生的隐式调用栈的开销不被计算在内）给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。给你一个含重复值的二叉搜索树（BST）的根节点。给你一个含重复值的二叉搜索树（BST）的根节点。，找出并返回 BST 中的所有。给你一个二叉搜索树的根节点。（即，出现频率最高的元素）。（即，出现频率最高的元素）。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第二十天|654. 最大二叉树,617. 合并二叉树,700. 二叉搜索树中的搜索,98. 验证二叉搜索树]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132319746</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132319746</guid><author>dragonccl</author><pubDate>Wed, 16 Aug 2023 16:40:14 +0800</pubDate><description><![CDATA[主要就是一层寻找最大值的逻辑，然后另一个就是构造二叉树的逻辑，一般都是，先构造根结点，然后递归构造左节点和右节点。- [3,2,1,6,0,5] 中的最大值是 6 ，左边部分是 [3,2,1] ，右边部分是 [0,5]。- [3,2,1] 中的最大值是 3 ，左边部分是 [] ，右边部分是 [2,1]。- [2,1] 中的最大值是 2 ，左边部分是 [] ，右边部分是 [1]。- [0,5] 中的最大值是 5 ，左边部分是 [0] ，右边部分是 []。根节点的值是 5 ，但是右子节点的值是 4。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第十八天|513. 找树左下角的值,112. 路径总和,106. 从中序与后序遍历序列构造二叉树,105. 从前序与中序遍历序列构造二叉树]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132247341</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132247341</guid><author>dragonccl</author><pubDate>Sun, 13 Aug 2023 12:23:05 +0800</pubDate><description><![CDATA[代返回值的递归：（这个要更难一些，因为我们必须要弄清所有的情况，来定对应返回值）由此我们也可以想到如果是记录最右边的，就把便利顺序换换就可以解决了。一直想左叶子递归，就会使得到达新的一层的时候，先访问最左边的；不存在 sum = 5 的根节点到叶子节点的路径。由于树是空的，所以不存在根节点到叶子节点的路径。的路径，这条路径上所有节点值相加等于目标和。等于目标和的根节点到叶节点路径如上图所示。路径总和等于给定目标和的路径。，请构造二叉树并返回其根节点。是指没有子节点的节点。是指没有子节点的节点。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第十七天|110. 平衡二叉树,257. 二叉树的所有路径,404. 左叶子之和]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132238751</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132238751</guid><author>dragonccl</author><pubDate>Fri, 11 Aug 2023 20:15:16 +0800</pubDate><description><![CDATA[在这个二叉树中，有两个左叶子，分别是 9 和 15，所以返回 24。这个地方不是用to_string会有一个样例出现乱码不知道为什么；根据定义我们很容易就能想到这道题是跟高度相关的（采用后序遍历）给定一个二叉树，判断它是否是高度平衡的二叉树。的左右两个子树的高度差的绝对值不超过 1。高度就是叶子节点为1；深度就是根结点为1；，返回所有从根节点到叶子节点的路径。另外也需要知道什么叫平衡二叉树。给你一个二叉树的根节点。是指没有子节点的节点。，返回所有左叶子之和。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第16天|104. 二叉树的最大深度，111. 二叉树的最小深度，222. 完全二叉树的节点个数]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132216426</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132216426</guid><author>dragonccl</author><pubDate>Thu, 10 Aug 2023 19:38:26 +0800</pubDate><description><![CDATA[的定义如下：在完全二叉树中，除了最底层节点可能没填满外，其余每层节点数都达到最大值，并且最下面一层的节点都集中在该层最左边的若干位置。注：这种带参数的递归不是很容易想，本题这种简单的就不过多解释了。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。是指从根节点到最远叶子节点的最长路径上的节点数。你可以设计一个更快的算法吗？可以仿照上一题写一个回溯，不难这里就不给出了。遍历树来统计节点是一种时间复杂度为。给定一个二叉树，找出其最小深度。叶子节点是指没有子节点的节点。，求出该树的节点个数。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第十五天| 二叉树的层序遍历(10),]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132210514</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132210514</guid><author>dragonccl</author><pubDate>Thu, 10 Aug 2023 16:34:20 +0800</pubDate><description><![CDATA[给定二叉树如图 A 所示，你的函数应该填充它的每个 next 指针，以指向其下一个右侧节点，如图 B 所示。序列化的输出按层序遍历排列，同一层节点由 next 指针连接，'#' 标志着每一层的结束。给定二叉树如图 A 所示，你的函数应该填充它的每个 next 指针，以指向其下一个右侧节点，如图 B 所示。填充它的每个 next 指针，让这个指针指向其下一个右侧节点。，想象自己站在它的右侧，按照从顶部到底部的顺序，返回从右侧所能看到的节点值。，其所有叶子节点都在同一层，每个父节点都有两个子节点。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第十四天|144. 二叉树的前序遍历，145. 二叉树的后序遍历，94. 二叉树的中序遍历]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132183201</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132183201</guid><author>dragonccl</author><pubDate>Wed, 09 Aug 2023 11:31:52 +0800</pubDate><description><![CDATA[今天代码就一个词，专注，中序就一直往深处专，在调用递归站，后序一般都是两种想法，一种先存储到栈里再返回，另一种就是思考他的倒序存储方式；递归算法很简单，你可以通过迭代算法完成吗？递归算法很简单，你可以通过迭代算法完成吗？递归算法很简单，你可以通过迭代算法完成吗？给你一棵二叉树的根节点。给定一个二叉树的根节点。总之就是：用栈模拟递归。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第十三天|239. 滑动窗口最大值,347. 前 K 个高频元素]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132172221</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132172221</guid><author>dragonccl</author><pubDate>Tue, 08 Aug 2023 18:17:20 +0800</pubDate><description><![CDATA[的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。优先队列的使用，主要是要学会如何定义一个优先队列，还有如何重写比较方法。滑动窗口的位置                最大值。滑动窗口每次只向右移动一位。，请你返回其中出现频率前。你所设计算法的时间复杂度。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第11天|20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132134536</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132134536</guid><author>dragonccl</author><pubDate>Sun, 06 Aug 2023 21:31:42 +0800</pubDate><description><![CDATA[例如，在 "abbaca" 中，我们可以删除 "bb" 由于两字母相邻且相同，这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca"，其中又只有 "aa" 可以执行重复项删除操作，所以最后的字符串为 "ca"。在完成所有重复项删除操作后返回最终的字符串。在 S 上反复执行重复项删除操作，直到无法继续删除。用栈模拟一些过程，可以类比一下，一些生活场景。会选择两个相邻且相同的字母，并删除它们。给出由小写字母组成的字符串。，判断字符串是否有效。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第十天|232. 用栈实现队列,225. 用队列实现栈]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132105974</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132105974</guid><author>dragonccl</author><pubDate>Fri, 04 Aug 2023 15:59:41 +0800</pubDate><description><![CDATA[通过这道题的练习我发现对队列函数还是较为模糊的，这道题就把front（）和back（）弄混了。请你仅使用两个队列实现一个后入先出（LIFO）的栈，并支持普通栈的全部四种操作（这道题主要考查对栈和队列的理解和熟悉程度，题目并不难，这里就不给出解答了，请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作（进阶版则需要添加指针了和换一种数据结构了，在用栈实现就比较困难了。你能否仅用一个队列来实现栈。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第九天|28. 找出字符串中第一个匹配项的下标,459. 重复的子字符串]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132091947</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132091947</guid><author>dragonccl</author><pubDate>Fri, 04 Aug 2023 15:19:13 +0800</pubDate><description><![CDATA[所以它有的时候不回去的原因是最大相等前后缀长度没达到最大，如果达到最大我们会发现会回到，这也是kmp简化比较的一部分。使用kmp算法，实话实说第一遍刷代码随想录，这个算法并没有完全理解，理解了80%左右。"leeto" 没有在 "leetcode" 中出现，所以返回 -1。字符串的第一个匹配项的下标（下标从 0 开始）。第一个匹配项的下标是 0 ，所以返回 0。"sad" 在下标 0 和 6 处匹配。]]></description><category></category></item><item><title><![CDATA[代码随想绿算法训练营第八天|344. 反转字符串，541. 反转字符串 II,剑指 Offer 05. 替换空格,151. 反转字符串中的单词,剑指 Offer 58 - II. 左旋转字符串]]></title><link>https://blog.youkuaiyun.com/dragonccl/article/details/132069522</link><guid>https://blog.youkuaiyun.com/dragonccl/article/details/132069522</guid><author>dragonccl</author><pubDate>Thu, 03 Aug 2023 14:57:05 +0800</pubDate><description><![CDATA[字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。一本题为例，它本身是让我们练习字符串反转，如果我们直接调用reverse（），那么这道题则索然无味，但swap（）交换就可以直接使用，因为我们的中的不是练习这道题。返回的结果字符串中，单词间应当仅用单个空格分隔，且不包含任何额外的空格。如果两个单词间有多余的空格，反转后的字符串需要将单词间的空格减少到仅有一个。另一种解法先翻转前n个，再翻转后面的，最后全部一起在翻转一次，就得到了想要的。使用了翻转子串的方法，想起来挺自然的，但浪费了空间；]]></description><category></category></item></channel></rss>