自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 力扣打卡Day23 二叉树Part08 修剪二叉搜索树+将有序数组转换为二叉搜索树+把二叉搜索树转换为累加树

用pre记录前一个节点的数值。

2024-07-11 10:12:57 147

原创 力扣打卡Day22 二叉树Part07 二叉搜索树的最近公共祖先+二叉搜索树中的插入操作+删除二叉搜索树中的节点

前序遍历,第一次出现的值在p、q的值区间内的节点,就是遍历到的答案。这里就把二叉搜索树中删除节点遇到的情况都搞清楚。可以跟二叉树的最近公共祖先一样的做法。另外也可以利用二叉搜索树的特性。

2024-07-10 18:50:32 187

原创 力扣打卡Day21 二叉树Part06 二叉搜索树的最小绝对差+二叉搜索树中的众数+二叉树的最近公共祖先

按照Day20的那一道题的思路来做的,中序遍历二叉搜索树,得到其遍历结果数组,然后再两两比较相邻数字之间的差值大小。

2024-07-10 16:21:17 311

原创 【C++学习笔记】继承与多态

这个栏目是为了速成C++机考准备的,以题目为导向。主要是通过ChatGPT给出的题目与测试用例来写。

2024-07-09 15:03:31 379

原创 【C++学习笔记】抽象类与虚函数

这个栏目是为了速成C++机考准备的,以题目为导向。主要是通过ChatGPT给出的题目与测试用例来写。

2024-07-09 14:16:04 759

原创 力扣打卡Day20 二叉树Part05 最大二叉树+合并二叉树+二叉搜索树中的搜索+验证二叉搜索树

希望能够赶紧做到后面的内容,我还得学Cpp的语法,着急备考,有些题会选择性跳过。

2024-07-07 01:02:27 349

原创 力扣打卡Day17-18 二叉树Part04 找树左下角的值+路径总和+从中序与后序遍历序列构造二叉树

这里我犯错的一个点是,我们不能在处理时删去当前节点的值,而是要删除其左孩子/右孩子的值,在主函数里也传入的是targetSum-root->val。因为我们的判定条件里,如果是叶子结点直接就return了,没有机会减去这个值。这里保证了先左后右的顺序,所以在最后一层第一个遍历到的肯定是最左边的节点。这个depth--有点难理解,就是在某个节点用完以后,重新回到上一层。有一点思路,但不多,先把这题放着吧,累了。抄题解心得:原来可以把顺序交换达到目的。这次终于理解了递归这里夹杂的回溯。自己写当然还是写不出来。

2024-07-03 17:38:13 291

原创 力扣打卡Day16 二叉树Part03 平衡二叉树+二叉树的所有路径+左叶子之和+完全二叉树的节点个数

抄题解感想:要判断是不是左叶子节点只能通过它的父节点来判断,即父节点的左节点存在,且左节点是叶子节点(左节点的左节点+左节点的右节点 都不存在)。所以实际操作的这一步就直接在父节点里完成了,终止条件那里如果是叶节点直接return 0了。并且判断叶子节点的方法是左节点和右节点为空,也就是所谓的一个“收获”的季节。然后我拎出来一个节点和它的子节点,根据图来看了一下,确实是这么一个道理,,平衡树:所有节点的左子树的深度和右子树的深度差值不超过1。忘记递归判断左子树和右子树是否是平衡的了,,很重要啊。

2024-07-03 15:37:16 243

原创 力扣打卡Day15 二叉树Part02 翻转二叉树+对称二叉树+二叉树的最大深度+二叉树的最小深度

这题的意思就是求根节点到叶子结点的最小深度,叶子节点要求左孩子和右孩子都为空,所以不能出现一边为空一边不为空的情况,如果出现了,这时候就要继续往不为空的那边遍历。求二叉树的最小深度和求二叉树的最大深度的差别主要在于处理左右孩子不为空的逻辑。这道题昨天用递归和层序遍历都写过一次了,再用递归写一次。昨天觉得不能用递归,然后看题解发现是可以的。这里是用到了前序遍历来递归的方法。1. 确定递归函数的参数和返回值。自己想出来的双向队列方法,诶嘿。不想做二叉树了,,时间好赶呐。3. 确定单层递归的逻辑。

2024-07-03 13:44:44 204

原创 力扣打卡Day14 二叉树part01 递归遍历+迭代遍历+层序遍历

递归的底层逻辑是用栈来实现的。这是递归遍历的三步走:1. 确定递归函数的参数和返回值2. 确定终止条件3. 确定单层递归的逻辑前序/中序/后序其实指的是中间节点的遍历顺序。前序:中左右一是要注意返回值,二是要注意对于ans这个数组的引用传递,三是注意C++语法中对于空指针的表示(NULL或者nullptr或者!后序:左右中中序:左中右。

2024-07-02 16:43:52 362

原创 高频SQL50题(基础版)——连接篇

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. 外键消耗资源,可能会造成死锁,一般不使用。

2024-06-08 17:41:43 877

原创 高频SQL50题(基础版)——查询篇

我这几天决定把SQL基础50题刷完,然后简单做做设计表格的题目。因此来总结一下SQL入门的学习笔记,来为互联网创造更多的学术垃圾。这是第一部分——查询篇。6.13要考数据库,考试题型包括:选择题,判断题,sql题目,servlet题目,四个部分。对于enum/varchar等的数据类型,在判断时要给值加引号。WHERE 条件筛选判断。AND 用于连接条件。

2024-06-08 15:40:29 176

原创 力扣打卡Day13 栈与队列Part03 滑动窗口最大值+前K个高频元素

单调队列主要关注元素之间的单调性,而优先级队列则关注元素的优先级。或其他支持随机访问迭代器的容器),并提供了一个队列接口,但其中的元素不是按照它们被添加的顺序出队的,而是根据它们的优先级。今天的内容主要是单调队列和优先级队列,最开始我以为两者是一样的,但是实际上不一样。成员(即出现次数),因此这个优先队列实际上存储的是出现次数最多的元素在堆顶,即它是一个最大堆。这题主要是考察了单调队列的实现,之前做力扣的时候基本上很少做这种需要自己定义类的题,需要多练习。

2024-06-06 14:28:45 659 1

原创 力扣打卡Day11 栈与队列Part02 主要是一些栈的操作

这题败在了string与long long int之间的转换,我本来企图用(long long int)来强制转换,但是强制类型转换(也称为C风格类型转换或旧式类型转换)只能用于将一种数值类型转换为另一种数值类型。的具体大小(即它们可以存储的值的范围)取决于编译器和平台。但是string不是数值类型,是一种定义的类,不能这么转换。这些数值类型在C++中都有明确的定义和用途,并且支持相应的算术运算和类型转换。感觉今天的题还挺简单的,以前都做过,很容易理解。),但没有规定具体的位数。

2024-06-02 21:50:13 396

原创 力扣打卡Day10 栈与队列Part01 栈与队列的相互实现

迭代器:扮演了容器与算法之间的胶合剂,共有五种类型,从实现角度来看,迭代器是一种将operator* , operator-> ,operator++,operator--等指针相关操作予以重载的class template.所有STL容器都附带有自己专属的迭代器,只有容器的设计者才知道如何遍历自己的元素。栈和队列的内部结构,栈的底层实现可以是vector,deque,list 都是可以的, 主要就是数组和链表的底层实现。没有指定底层实现的时候,默认是以deque来实现的(SGI STL)。

2024-05-31 22:40:51 707

原创 力扣打卡Day09 KMP!!!!

然后还在for循环里加了条j是否等于模式串长度的判断,这里的意义是,如果模式串都对上了,那么j就会遍历到最后,存在对应的匹配项,我们这时候只要返回对应的下标就可以啦。对于三数之和使用双指针法就是将原本暴力O(n^3)的解法,降为O(n^2)的解法,四数之和的双指针解法就是将原本暴力O(n^4)的解法,降为O(n^3)的解法。因为字符串s的最长相同前后缀的长度一定是不包含s本身,所以 最长相同前后缀长度必然是m * x,而且 n - m = 1,(这里如果不懂,看上面的推理)

2024-05-30 14:51:07 414

原创 力扣打卡Day08 字符串 Part01

这道题我主要是做了一个记录字母的set,然后判断对应的char在不在set里,如果是数字,那就在ans后插入“number”,如果是小写字母,那就直接插入对应的小写字母。打败了很少很少的人。reverse既可以用于反转字符串,也可以用于反转数组和vector容器,针对字符串和vector容器,需要传入的是迭代器iterator,其中begin()和end()都返回的是迭代器。但是看来是还有更简单的方法,就是将两个相同的字符串给拼在一起,然后定位到需要的字符串的开头,然后substr取出指定长度的字符串。

2024-05-30 14:50:30 432

原创 力扣打卡Day07 哈希表Part02

不会做,抄的题解,跟上一题一个思路,但是由于这里是四个数组,所以再套一层循环。因为是返回数组的数目,所以可以直接把四个数组拆成两队来计算。心情不好,题也做不出来,今天划水了。为什么哈希表专题一堆排序+双指针。以前抄过题解,但还是不会。

2024-05-28 23:10:04 508

原创 力扣打卡Day06 哈希表

自己写的,感觉我的方法比官方题解看起来简洁不少,主要是用到了erase(),首先利用到了集合不重复的特性,然后再遍历第二个数组,查找相交的元素,再把集合里的元素给擦除,防止在答案里重复插入。学习了哈希表的实现原理、类别以及函数,然后才发现数组竟然也是一种哈希结构,区别就在于下标索引,所以unordered_set的查询效率也是O(1)。最气的是这道题之前考前端的期末考试里出过,但是一点思路都没有,看了别人的题解,发现可以之前做的那道查找循环的题,用快慢指针来做。作者:金字塔下的小蜗牛。

2024-05-27 17:51:30 672

原创 力扣打卡Day 04 链表链表还是链表

今天还是做的力扣,虽然感觉到还是挺亲切,但是刚开始还是挺磕磕绊绊的,总是会出现runtime error,我发现这种问题出现,就需要仔细debug。另外还有快慢指针做法,相当于快指针的速度是2,慢指针的速度是1,然后遍历,当快慢指针相遇时的节点的就是那个答案辽!不过就是一开始,以为相交的节点就是值一样,,然后就想了好久,还以为题目的示例有问题。以前做过,哈希表秒了哈希表秒了哈希表秒了哈希表秒了哈希表秒了哈希表秒了哈希表秒了。其实就是计算了一下链表的长度,不过debug以后成功运行的感觉特别好。

2024-05-25 23:44:20 1240 1

原创 力扣打卡Day03 移除链表元素+设计链表+反转链表

这个题还是挺有必要细看的,难度不大,主要是在于链表类的构建,一些公共类、私密类的变量和函数。对链表还是挺熟的,基本没有不理解的地方,大二的时候也设计过链表了,不过不太懂力扣上的链表怎么设计的,看了题解也会了。除了递归,很难想,没脑子想,之前看过别人写的,递归只有几个条件的,改天看看。考完试真的好困,写完博客去睡觉了zzz已经没脑子接着看了,水一天博客了,不过我告诉自己能写就是胜利。用的迭代,还是那经典四步,pre、cur、temp三个节点的next连来连去的。要注意循环的条件以及返回的值!

2024-05-24 22:33:32 663

原创 力扣打卡Day02 数组Part2+有序数组的平方+长度最小的子数组+螺旋矩阵II

不过通过这题我终于懂了左开右闭是啥意思了,这题里面的每次循环,螺旋起始点和螺旋边的长度的更新也很关键,以及通过四个不同的for循环,来实现二维数组里的边的遍历。但是双指针法,我本来想的是原地改数组,结果做不成,人直接新建了个数组放答案。要用双指针法做滑动窗口,精髓是count>=target时的那个while循环,以及当ans更新的时候的,左指针向右移。好难,先跟着题解做了一遍,明天晚上要考试,先写个博客,等后天再把这周的题都过一遍。最后是当n为奇数的时候,矩阵最中间那一格的赋值。难到我了,基本没有思路。

2024-05-23 12:04:50 690

原创 力扣打卡Day01 数组+二分查找+移除元素

今天学了数组,做了704.二分查找和27.移除元素,主要是掌握了一些小技巧,回顾了一下数组的存储(连续内存地址),看到地址那,之前的十六进制有点忘了,然后又去了解了一下。简单回顾一下然后做出来了,跟题解对比了一下,我的主要是差在了防溢出上,(p+q)/2可能会溢出,可以改成p+(q-p)/2。双指针法的精髓在于,精准地定位在对应的数上,然后用其他数覆盖它,不过我还是觉得快慢指针都从开头出发更好理解,如果是一个在开头一个在末尾,可能会把后面的符合条件的数又换到前面去。

2024-05-22 21:49:48 831

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除