<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Dreamer_rx的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Dreamer_rx</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Dreamer_rx]]></copyright><item><title><![CDATA[把二叉搜索树转换为累加树]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104230387</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104230387</guid><author>Dreamer_rx</author><pubDate>Sun, 09 Feb 2020 00:24:17 +0800</pubDate><description><![CDATA[把二叉搜索树转换为累加树
二叉搜索树
二叉查找树（Binary Search Tree），（又：二叉搜索树，二叉排序树）它或者是一棵空树，或者是具有下列性质的二叉树： 若它的左子树不空，则左子树上所有结点的值均小于它的根结点的值； 若它的右子树不空，则右子树上所有结点的值均大于它的根结点的值； 它的左、右子树也分别为二叉排序树。
示例
输入: 二叉搜索树:
5
/    \ 
2     13
输...]]></description><category></category></item><item><title><![CDATA[最小路径和]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104199363</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104199363</guid><author>Dreamer_rx</author><pubDate>Thu, 06 Feb 2020 17:32:19 +0800</pubDate><description><![CDATA[最小路径和
给定一个包含非负整数的 m&nbsp;x&nbsp;n&nbsp;网格，请找出一条从左上角到右下角的路径，使得路径上的数字总和为最小。
说明：每次只能向下或者向右移动一步。
示例
输入:
[
&nbsp; [1,3,1],
[1,5,1],
[4,2,1]
]
输出: 7
解释: 因为路径 1→3→1→1→1 的总和最小。
代码
递归暴力法
int calculate(vector&l...]]></description><category></category></item><item><title><![CDATA[滑动窗口思想习题验证]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104176688</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104176688</guid><author>Dreamer_rx</author><pubDate>Tue, 04 Feb 2020 23:07:56 +0800</pubDate><description><![CDATA[滑动窗口习题
一，无重复字符的最长字串
要求
给定一个字符串，请你找出其中不含有重复字符的&nbsp;最长子串&nbsp;的长度。
示例&nbsp;1:
输入: “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”，所以其长度为 3。
示例 2:
输入: “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”，所以其长度为 1。
示例 3:
代码
int...]]></description><category></category></item><item><title><![CDATA[二叉树的中序遍历]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104172510</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104172510</guid><author>Dreamer_rx</author><pubDate>Tue, 04 Feb 2020 17:40:07 +0800</pubDate><description><![CDATA[二叉树的中序遍历
递归法



vector&lt;int&gt; res;
vector&lt;int&gt; inorderTraversal(TreeNode* root) {
    if(!root) return res;
    if(root-&gt;left) inorderTraversal(root-&gt;left);
    res.push_back(root-&gt;...]]></description><category></category></item><item><title><![CDATA[lectcode-任务调度]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104172502</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104172502</guid><author>Dreamer_rx</author><pubDate>Tue, 04 Feb 2020 17:39:34 +0800</pubDate><description><![CDATA[要求
给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行，并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务，或者在待命状态。
然而，两个相同种类的任务之间必须有长度为&nbsp;n 的冷却时间，因此至少有连续 n 个单位时间内 CPU 在执行不同的任务，或者在待命...]]></description><category></category></item><item><title><![CDATA[lectcode-最短无序连续子数组]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104160575</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104160575</guid><author>Dreamer_rx</author><pubDate>Mon, 03 Feb 2020 19:13:38 +0800</pubDate><description><![CDATA[要求
给定一个整数数组，你需要寻找一个连续的子数组，如果对这个子数组进行升序排序，那么整个数组都会变为升序排序。
你找到的子数组应是最短的，请输出它的长度。
示例
输入: [2, 6, 4, 8, 10, 9, 15]
输出: 5
解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序，那么整个表都会变为升序排序。
代码
先排序后比较



int findUnsortedSubarr...]]></description><category></category></item><item><title><![CDATA[lectcode-旋转图像]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104149080</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104149080</guid><author>Dreamer_rx</author><pubDate>Sun, 02 Feb 2020 20:34:17 +0800</pubDate><description><![CDATA[要求
给定一个 n&nbsp;×&nbsp;n 的二维矩阵表示一个图像。
将图像顺时针旋转 90 度。
说明：
你必须在原地旋转图像，这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。
代码


转置加反转



void rotate(vector&lt;vector&lt;int&gt;&gt;&amp; matrix) {
    int m = matrix.size(...]]></description><category></category></item><item><title><![CDATA[174届lectcode周赛总结]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104147724</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104147724</guid><author>Dreamer_rx</author><pubDate>Sun, 02 Feb 2020 18:33:16 +0800</pubDate><description><![CDATA[第一题
要求
给你一个大小为 m * n 的方阵 mat，方阵由若干军人和平民组成，分别用 0 和 1 表示。
请你返回方阵中战斗力最弱的 k 行的索引，按从最弱到最强排序。
如果第 i 行的军人数量少于第 j 行，或者两行军人数量相同但 i 小于 j，那么我们认为第 i 行的战斗力比第 j 行弱。
军人 总是 排在一行中的靠前位置，也就是说 1 总是出现在 0 之前。
示例
示例 1：
输入：m...]]></description><category></category></item><item><title><![CDATA[求二叉树的最大深度]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104136601</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104136601</guid><author>Dreamer_rx</author><pubDate>Sat, 01 Feb 2020 18:07:58 +0800</pubDate><description><![CDATA[求二叉树的最大深度


递归法(深度优先）



int maxDepth(TreeNode* root) {
 if(root==nullptr) return 0;
 int l = maxDepth(root-&gt;left)+1;
 int r = maxDepth(root-&gt;right)+1;
 return l&gt;r?l:r;



栈实现深度遍历找深度



int m...]]></description><category></category></item><item><title><![CDATA[lectcode - 买卖股票的最佳时机]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104125926</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104125926</guid><author>Dreamer_rx</author><pubDate>Fri, 31 Jan 2020 17:18:11 +0800</pubDate><description><![CDATA[要求
给定一个数组，它的第&nbsp;i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易（即买入和卖出一支股票），设计一个算法来计算你所能获取的最大利润。
注意你不能在买入股票前卖出股票。
示例
示例 1:
输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天（股票价格 = 1）的时候买入，在第 5 天（股票价格 = 6）的时候卖出，最大利润 = 6-1 = ...]]></description><category></category></item><item><title><![CDATA[lectcode - 全排列(回溯法）]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104125503</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104125503</guid><author>Dreamer_rx</author><pubDate>Fri, 31 Jan 2020 16:41:18 +0800</pubDate><description><![CDATA[要求
给定一个没有重复数字的序列，返回其所有可能的全排列。
示例
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
代码


回溯法



vector&lt;vector&lt;int&gt;&gt; permute(vector&lt;int&gt;&amp; nums) {
    vector&...]]></description><category></category></item><item><title><![CDATA[lectcode-整数的各位积和之差]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104120019</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104120019</guid><author>Dreamer_rx</author><pubDate>Thu, 30 Jan 2020 22:52:08 +0800</pubDate><description><![CDATA[要求
给你一个整数&nbsp;n，请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。
示例
示例 1：
输入：n = 234
输出：15
解释：
各位数之积 = 2 * 3 * 4 = 24
各位数之和 = 2 + 3 + 4 = 9
结果 = 24 - 9 = 15
示例 2：
输入：n = 4421
输出：21
解释：
各位数之积 = 4 * 4 * 2 * 1 = 32
各位数...]]></description><category></category></item><item><title><![CDATA[lectcode-搜索二维矩阵Ⅱ]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104119831</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104119831</guid><author>Dreamer_rx</author><pubDate>Thu, 30 Jan 2020 22:31:37 +0800</pubDate><description><![CDATA[要求
编写一个高效的算法来搜索&nbsp;m&nbsp;x&nbsp;n&nbsp;矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性：
每行的元素从左到右升序排列。
每列的元素从上到下升序排列。
示例
现有矩阵 matrix 如下：
[
[1,   4,  7, 11, 15],
[2,   5,  8, 12, 19],
[3,   6,  9, 16, 22],
[10, ...]]></description><category></category></item><item><title><![CDATA[lectcode-二叉树的最近公共祖先]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104119102</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104119102</guid><author>Dreamer_rx</author><pubDate>Thu, 30 Jan 2020 21:17:57 +0800</pubDate><description><![CDATA[要求
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为：“对于有根树 T 的两个结点 p、q，最近公共祖先表示为一个结点 x，满足 x 是 p、q 的祖先且 x 的深度尽可能大（一个节点也可以是它自己的祖先）。”
代码


递归



TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, Tr...]]></description><category></category></item><item><title><![CDATA[lectcode-寻找重复数]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104109637</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104109637</guid><author>Dreamer_rx</author><pubDate>Wed, 29 Jan 2020 20:01:18 +0800</pubDate><description><![CDATA[要求
给定一个包含&nbsp;n + 1 个整数的数组&nbsp;nums，其数字都在 1 到 n&nbsp;之间（包括 1 和 n），可知至少存在一个重复的整数。假设只有一个重复的整数，找出这个重复的数。
示例
示例 1:
输入: [1,3,4,2,2]
输出: 2
示例 2:
输入: [3,1,3,4,2]
输出: 3
代码


先排序，再寻找



int findDuplicate(vec...]]></description><category></category></item><item><title><![CDATA[实现前缀树]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104107719</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104107719</guid><author>Dreamer_rx</author><pubDate>Wed, 29 Jan 2020 16:17:36 +0800</pubDate><description><![CDATA[实现前缀树
Trie (发音为 “try”) 或前缀树是一种树数据结构，用于检索字符串数据集中的键。这一高效的数据结构有多种应用：

自动补全
拼写检查
最长前缀匹配
打字预测

代码
private:
bool isEnd = false;
Trie *next[26] = {nullptr};
public:
/** Initialize your data structure here. *...]]></description><category></category></item><item><title><![CDATA[lectcode-课程表(拓扑排序）]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104106092</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104106092</guid><author>Dreamer_rx</author><pubDate>Wed, 29 Jan 2020 13:08:27 +0800</pubDate><description><![CDATA[要求
现在你总共有 n 门课需要选，记为&nbsp;0&nbsp;到&nbsp;n-1。
在选修某些课程之前需要一些先修课程。&nbsp;例如，想要学习课程 0 ，你需要先完成课程 1 ，我们用一个匹配来表示他们: [0,1]
给定课程总量以及它们的先决条件，判断是否可能完成所有课程的学习？
示例
示例 1:
输入: 2, [[1,0]]
输出: true
解释:&nbsp;总共有 2 门课程。学...]]></description><category></category></item><item><title><![CDATA[lectcode-移动0]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104103050</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104103050</guid><author>Dreamer_rx</author><pubDate>Tue, 28 Jan 2020 22:04:42 +0800</pubDate><description><![CDATA[要求
给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序
示例
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
代码


直接法



void moveZeroes(vector&lt;int&gt;&amp; nums) {
   int end = nums.size()-1;
   int i = 0;
   while...]]></description><category></category></item><item><title><![CDATA[lectcode-岛屿数量]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104099481</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104099481</guid><author>Dreamer_rx</author><pubDate>Tue, 28 Jan 2020 14:14:05 +0800</pubDate><description><![CDATA[要求
给定一个由&nbsp;‘1’（陆地）和 ‘0’（水）组成的的二维网格，计算岛屿的数量。一个岛被水包围，并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。
示例
示例 1:
输入:
11110
11010
11000
00000
输出:&nbsp;1
示例&nbsp;2:
输入:
11000
11000
00100
00011
输出: 3
代码


递归遍...]]></description><category></category></item><item><title><![CDATA[lectcode-反转二叉树]]></title><link>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104094548</link><guid>https://blog.youkuaiyun.com/Dreamer_rx/article/details/104094548</guid><author>Dreamer_rx</author><pubDate>Mon, 27 Jan 2020 18:20:12 +0800</pubDate><description><![CDATA[翻转二叉树


采用递归法



TreeNode* invertTree(TreeNode* root) {
    if(root==nullptr) return root;
    TreeNode *l = invertTree(root-&gt;right);
    TreeNode *r = invertTree(root-&gt;left);
    root-&gt;left ...]]></description><category></category></item></channel></rss>