<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Lumory的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Lumory</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Lumory]]></copyright><item><title><![CDATA[力扣打卡Day23 二叉树Part08 修剪二叉搜索树+将有序数组转换为二叉搜索树+把二叉搜索树转换为累加树]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/140343363</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/140343363</guid><author>Lumory</author><pubDate>Thu, 11 Jul 2024 10:12:57 +0800</pubDate><description><![CDATA[用pre记录前一个节点的数值。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day22 二叉树Part07 二叉搜索树的最近公共祖先+二叉搜索树中的插入操作+删除二叉搜索树中的节点]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/140327436</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/140327436</guid><author>Lumory</author><pubDate>Wed, 10 Jul 2024 18:50:32 +0800</pubDate><description><![CDATA[前序遍历，第一次出现的值在p、q的值区间内的节点，就是遍历到的答案。这里就把二叉搜索树中删除节点遇到的情况都搞清楚。可以跟二叉树的最近公共祖先一样的做法。另外也可以利用二叉搜索树的特性。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day21 二叉树Part06 二叉搜索树的最小绝对差+二叉搜索树中的众数+二叉树的最近公共祖先]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/140238661</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/140238661</guid><author>Lumory</author><pubDate>Wed, 10 Jul 2024 16:21:17 +0800</pubDate><description><![CDATA[按照Day20的那一道题的思路来做的，中序遍历二叉搜索树，得到其遍历结果数组，然后再两两比较相邻数字之间的差值大小。]]></description><category></category></item><item><title><![CDATA[【C++学习笔记】继承与多态]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/140294725</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/140294725</guid><author>Lumory</author><pubDate>Tue, 09 Jul 2024 15:03:31 +0800</pubDate><description><![CDATA[这个栏目是为了速成C++机考准备的，以题目为导向。主要是通过ChatGPT给出的题目与测试用例来写。]]></description><category></category></item><item><title><![CDATA[【C++学习笔记】抽象类与虚函数]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/140278066</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/140278066</guid><author>Lumory</author><pubDate>Tue, 09 Jul 2024 14:16:04 +0800</pubDate><description><![CDATA[这个栏目是为了速成C++机考准备的，以题目为导向。主要是通过ChatGPT给出的题目与测试用例来写。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day20 二叉树Part05 最大二叉树+合并二叉树+二叉搜索树中的搜索+验证二叉搜索树]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/140238294</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/140238294</guid><author>Lumory</author><pubDate>Sun, 07 Jul 2024 01:02:27 +0800</pubDate><description><![CDATA[希望能够赶紧做到后面的内容，我还得学Cpp的语法，着急备考，有些题会选择性跳过。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day17-18 二叉树Part04 找树左下角的值+路径总和+从中序与后序遍历序列构造二叉树]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/140155706</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/140155706</guid><author>Lumory</author><pubDate>Wed, 03 Jul 2024 17:38:13 +0800</pubDate><description><![CDATA[这里我犯错的一个点是，我们不能在处理时删去当前节点的值，而是要删除其左孩子/右孩子的值，在主函数里也传入的是targetSum-root->val。因为我们的判定条件里，如果是叶子结点直接就return了，没有机会减去这个值。这里保证了先左后右的顺序，所以在最后一层第一个遍历到的肯定是最左边的节点。这个depth--有点难理解，就是在某个节点用完以后，重新回到上一层。有一点思路，但不多，先把这题放着吧，累了。抄题解心得：原来可以把顺序交换达到目的。这次终于理解了递归这里夹杂的回溯。自己写当然还是写不出来。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day16 二叉树Part03 平衡二叉树+二叉树的所有路径+左叶子之和+完全二叉树的节点个数]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/140150803</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/140150803</guid><author>Lumory</author><pubDate>Wed, 03 Jul 2024 15:37:16 +0800</pubDate><description><![CDATA[抄题解感想：要判断是不是左叶子节点只能通过它的父节点来判断，即父节点的左节点存在，且左节点是叶子节点（左节点的左节点+左节点的右节点 都不存在）。所以实际操作的这一步就直接在父节点里完成了，终止条件那里如果是叶节点直接return 0了。并且判断叶子节点的方法是左节点和右节点为空，也就是所谓的一个“收获”的季节。然后我拎出来一个节点和它的子节点，根据图来看了一下，确实是这么一个道理，，平衡树：所有节点的左子树的深度和右子树的深度差值不超过1。忘记递归判断左子树和右子树是否是平衡的了，，很重要啊。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day15 二叉树Part02 翻转二叉树+对称二叉树+二叉树的最大深度+二叉树的最小深度]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/140148953</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/140148953</guid><author>Lumory</author><pubDate>Wed, 03 Jul 2024 13:44:44 +0800</pubDate><description><![CDATA[这题的意思就是求根节点到叶子结点的最小深度，叶子节点要求左孩子和右孩子都为空，所以不能出现一边为空一边不为空的情况，如果出现了，这时候就要继续往不为空的那边遍历。求二叉树的最小深度和求二叉树的最大深度的差别主要在于处理左右孩子不为空的逻辑。这道题昨天用递归和层序遍历都写过一次了，再用递归写一次。昨天觉得不能用递归，然后看题解发现是可以的。这里是用到了前序遍历来递归的方法。1. 确定递归函数的参数和返回值。自己想出来的双向队列方法，诶嘿。不想做二叉树了，，时间好赶呐。3. 确定单层递归的逻辑。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day14 二叉树part01 递归遍历+迭代遍历+层序遍历]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/140126628</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/140126628</guid><author>Lumory</author><pubDate>Tue, 02 Jul 2024 16:43:52 +0800</pubDate><description><![CDATA[递归的底层逻辑是用栈来实现的。这是递归遍历的三步走：1. 确定递归函数的参数和返回值2. 确定终止条件3. 确定单层递归的逻辑前序/中序/后序其实指的是中间节点的遍历顺序。前序：中左右一是要注意返回值，二是要注意对于ans这个数组的引用传递，三是注意C++语法中对于空指针的表示（NULL或者nullptr或者!后序：左右中中序：左中右。]]></description><category></category></item><item><title><![CDATA[高频SQL50题（基础版）——连接篇]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/139547394</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/139547394</guid><author>Lumory</author><pubDate>Sat, 08 Jun 2024 17:41:43 +0800</pubDate><description><![CDATA[sql中的连接查询分为，inner join内连接，outer join外连接，full join全连接，cross join交叉连接，self join自连接。比如W1.id=1和W2.id=2，其他的行数据像是W1.id=1和W2.id=3都筛掉了。左连接，然后找出transaction_id为NULL的行，以v.customer_id对这些行进行分组计数。内连接，然后把每台机器每个process的start和end的挑出来放在一行里，方便计算平均时间。b. 外键消耗资源，可能会造成死锁，一般不使用。]]></description><category></category></item><item><title><![CDATA[高频SQL50题（基础版）——查询篇]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/139546935</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/139546935</guid><author>Lumory</author><pubDate>Sat, 08 Jun 2024 15:40:29 +0800</pubDate><description><![CDATA[我这几天决定把SQL基础50题刷完，然后简单做做设计表格的题目。因此来总结一下SQL入门的学习笔记，来为互联网创造更多的学术垃圾。这是第一部分——查询篇。6.13要考数据库，考试题型包括：选择题，判断题，sql题目，servlet题目，四个部分。对于enum/varchar等的数据类型，在判断时要给值加引号。WHERE 条件筛选判断。AND 用于连接条件。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day13 栈与队列Part03 滑动窗口最大值+前K个高频元素]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/139498776</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/139498776</guid><author>Lumory</author><pubDate>Thu, 06 Jun 2024 14:28:45 +0800</pubDate><description><![CDATA[单调队列主要关注元素之间的单调性，而优先级队列则关注元素的优先级。或其他支持随机访问迭代器的容器），并提供了一个队列接口，但其中的元素不是按照它们被添加的顺序出队的，而是根据它们的优先级。今天的内容主要是单调队列和优先级队列，最开始我以为两者是一样的，但是实际上不一样。成员（即出现次数），因此这个优先队列实际上存储的是出现次数最多的元素在堆顶，即它是一个最大堆。这题主要是考察了单调队列的实现，之前做力扣的时候基本上很少做这种需要自己定义类的题，需要多练习。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day11 栈与队列Part02 主要是一些栈的操作]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/139398126</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/139398126</guid><author>Lumory</author><pubDate>Sun, 02 Jun 2024 21:50:13 +0800</pubDate><description><![CDATA[这题败在了string与long long int之间的转换，我本来企图用(long long int)来强制转换，但是强制类型转换（也称为C风格类型转换或旧式类型转换）只能用于将一种数值类型转换为另一种数值类型。的具体大小（即它们可以存储的值的范围）取决于编译器和平台。但是string不是数值类型，是一种定义的类，不能这么转换。这些数值类型在C++中都有明确的定义和用途，并且支持相应的算术运算和类型转换。感觉今天的题还挺简单的，以前都做过，很容易理解。），但没有规定具体的位数。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day10 栈与队列Part01 栈与队列的相互实现]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/139362724</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/139362724</guid><author>Lumory</author><pubDate>Fri, 31 May 2024 22:40:51 +0800</pubDate><description><![CDATA[迭代器：扮演了容器与算法之间的胶合剂，共有五种类型，从实现角度来看，迭代器是一种将operator* , operator-> ,operator++,operator--等指针相关操作予以重载的class template.所有STL容器都附带有自己专属的迭代器，只有容器的设计者才知道如何遍历自己的元素。栈和队列的内部结构，栈的底层实现可以是vector，deque，list 都是可以的， 主要就是数组和链表的底层实现。没有指定底层实现的时候，默认是以deque来实现的（SGI STL）。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day09 KMP!!!!]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/139324326</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/139324326</guid><author>Lumory</author><pubDate>Thu, 30 May 2024 14:51:07 +0800</pubDate><description><![CDATA[然后还在for循环里加了条j是否等于模式串长度的判断，这里的意义是，如果模式串都对上了，那么j就会遍历到最后，存在对应的匹配项，我们这时候只要返回对应的下标就可以啦。对于三数之和使用双指针法就是将原本暴力O(n^3)的解法，降为O(n^2)的解法，四数之和的双指针解法就是将原本暴力O(n^4)的解法，降为O(n^3)的解法。因为字符串s的最长相同前后缀的长度一定是不包含s本身，所以 最长相同前后缀长度必然是m * x，而且 n - m = 1，（这里如果不懂，看上面的推理）]]></description><category></category></item><item><title><![CDATA[力扣打卡Day08 字符串 Part01]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/139324296</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/139324296</guid><author>Lumory</author><pubDate>Thu, 30 May 2024 14:50:30 +0800</pubDate><description><![CDATA[这道题我主要是做了一个记录字母的set，然后判断对应的char在不在set里，如果是数字，那就在ans后插入“number”，如果是小写字母，那就直接插入对应的小写字母。打败了很少很少的人。reverse既可以用于反转字符串，也可以用于反转数组和vector容器，针对字符串和vector容器，需要传入的是迭代器iterator，其中begin()和end()都返回的是迭代器。但是看来是还有更简单的方法，就是将两个相同的字符串给拼在一起，然后定位到需要的字符串的开头，然后substr取出指定长度的字符串。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day07 哈希表Part02]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/139280331</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/139280331</guid><author>Lumory</author><pubDate>Tue, 28 May 2024 23:10:04 +0800</pubDate><description><![CDATA[不会做，抄的题解，跟上一题一个思路，但是由于这里是四个数组，所以再套一层循环。因为是返回数组的数目，所以可以直接把四个数组拆成两队来计算。心情不好，题也做不出来，今天划水了。为什么哈希表专题一堆排序+双指针。以前抄过题解，但还是不会。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day06 哈希表]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/139243644</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/139243644</guid><author>Lumory</author><pubDate>Mon, 27 May 2024 17:51:30 +0800</pubDate><description><![CDATA[自己写的，感觉我的方法比官方题解看起来简洁不少，主要是用到了erase()，首先利用到了集合不重复的特性，然后再遍历第二个数组，查找相交的元素，再把集合里的元素给擦除，防止在答案里重复插入。学习了哈希表的实现原理、类别以及函数，然后才发现数组竟然也是一种哈希结构，区别就在于下标索引，所以unordered_set的查询效率也是O(1)。最气的是这道题之前考前端的期末考试里出过，但是一点思路都没有，看了别人的题解，发现可以之前做的那道查找循环的题，用快慢指针来做。作者：金字塔下的小蜗牛。]]></description><category></category></item><item><title><![CDATA[力扣打卡Day 04 链表链表还是链表]]></title><link>https://blog.youkuaiyun.com/Lumory/article/details/139205601</link><guid>https://blog.youkuaiyun.com/Lumory/article/details/139205601</guid><author>Lumory</author><pubDate>Sat, 25 May 2024 23:44:20 +0800</pubDate><description><![CDATA[今天还是做的力扣，虽然感觉到还是挺亲切，但是刚开始还是挺磕磕绊绊的，总是会出现runtime error，我发现这种问题出现，就需要仔细debug。另外还有快慢指针做法，相当于快指针的速度是2，慢指针的速度是1，然后遍历，当快慢指针相遇时的节点的就是那个答案辽！不过就是一开始，以为相交的节点就是值一样，，然后就想了好久，还以为题目的示例有问题。以前做过，哈希表秒了哈希表秒了哈希表秒了哈希表秒了哈希表秒了哈希表秒了哈希表秒了。其实就是计算了一下链表的长度，不过debug以后成功运行的感觉特别好。]]></description><category></category></item></channel></rss>