自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 回溯与组合问题||

还是使用回溯法,但是这个题要去除重复组,因此需要有个判断的过程,同时确定结束条件的时候,要注意我们是通过排序和判断条件来去重的,因此越往后遍历的数字越大,这样会若目前的sum总值已经超过target,可以直接返回,否则,会超过题目的时间复杂度。(根据题目描述也知道,candidates的值都是正整数的)回溯法,但是这里要注意的是避免重复计算组合,所以需要有函数中的startIndex来指定开。按照我的想法来说,是需要判断指定字符是否是回文的,因为除了回溯之外还需要一个函数;131.分割回文字符串。

2023-05-14 13:04:06 57

原创 回溯题中的组合

push_back 函数:只能追加单个字符。append 函数:允许追加多个参数值。remove:一般与erase搭配使用。+= 运算符:追加单个参数值。pop_back:删除末尾字符。17.电话号码的字母组合。erase:删除指定字符。216.组合总和|||

2023-05-11 07:14:24 59

原创 回溯算法学习

回溯法就是穷举,穷举所有可能,选出我们想要的答案;

2023-05-09 20:57:30 51

原创 二叉树结尾

确定单层逻辑,节点值只有三种情况,节点值小于界定值,此时节点左孩子所有值都小于界定值,可以直接删除,但是右孩子不知道情况;节点值大于界定值,说明右孩子所有值都大于界定值,直接删除,但是左孩子是不能确定的,还需要继续递归;如果节点值在界定范围之内,但是左右孩子的值都是不确定的,继续递归两侧。还是递归法,三部曲,这道题比较简单,是因为本身就是有序数组,并且只要保持数组始终二分就可以构造出来这样一个搜索树。把顺序换一下就可以了,右中左,这样递加,最主要的是,有一个记录值的数据。538.把二叉搜索树转换为累加树。

2023-05-08 21:48:07 55

原创 二叉搜索树操作

上一篇中可以用一般二叉树的查询方法来看,根据二叉搜索树的特性,那么可以根据需要查找的节点的值;这个题的难点在于删除节点;特别是二叉搜索树的,因为要保持二叉搜索树的特性。如果已经在目前节点的两侧了,那么当前节点就是最近公共祖先了;如果都在目前节点的右侧,只需要从右侧继续查找;如果都在目前节点的左侧,只需要从左侧继续查找;235.二叉搜索树的最近公共祖先。450.删除二叉搜索树中的节点。701.二叉搜索树的插入操作。

2023-05-06 17:35:44 20

原创 二叉搜索树及公共祖先

用了一次迭代法来解题,细节的地方在于需要一直记录数字出现最大次数,中序遍历可以直接相邻判断就好了,但是循环里面需要判断最后次数结束,循环结束还要判断一次。如果左右分别返回不为nullptr,那么左右必然包含q,p,root直接是最近祖先。上一篇文章中的递归法来做,一直记录上一个结点。如果q是p的祖先,直接返回一方的节点。如果节点是q或者p,可以直接返回;这里二叉搜索树一直与中序遍历挂钩。530.二叉搜索树的最小绝对差。236.二叉树的最近公共祖先。501.二叉搜索树中的众数。

2023-05-06 12:27:11 20

原创 二叉搜索树与中序遍历

第三步,判断单层逻辑,当两个二叉树结点都不为空时,将root2的值加到root1上,当二叉树结点其中一个不为空时,直接返回对应不为空的就好了。递归三部曲,但是我想着是不是可以在将value在函数内部递归,但是没做出来。第二步,判断终止条件,当两个二叉树结点都是空的时候,直接返回nullptr。第一步,判断函数参数与返回值,函数参数为两个二叉树结点,返回结果结点。迭代法就是按照前序遍历的顺序。700.二叉搜索树的搜索。

2023-05-04 16:31:44 21

原创 根据遍历顺序构造二叉树

第三步,确定单层逻辑,当前节点为叶子节点时,判断此层高度是否是当前遍历到的最大的,如果是,那么需要更新value与maxDepth,即使是前序遍历(中-左-右)、中序遍历(左-中-右)、后序遍历(左-右-中),很明显,每次都是从左边开始的,那么保证每次更新到的都是树最左边值;第三步,函数单层逻辑,每次找出对应边界内的根节点,然后分开左子树的范围与右子树的范围,再找到对应左子树的根节点与右子树的根节点;第一步,判断函数参数与返回值,中序与后序遍历数组,还需要包括,对应数组的左右边界,返回值需要返回节点。

2023-05-03 16:24:41 90

原创 二叉树零散

做递归方法的时候,有点搞蒙了,主要是怎么集成一个string,没想好怎么加”->“ 这个符号,注意我开始做的时候,确定终止条件是节点为空的时候,但是这个时候返回的值是双份的,意思是叶子节点处保留了两份记录,同时如果左子树为空或者右子树为空的时候都会造成一份记录,这个时候怎么办,只能改成是遇到叶子节点的时候,终止,加节点到string上;3.确定运行逻辑,左子树、右子树若不满足平衡二叉树的条件,那么返回-1标记值,若左子树右子树的高度大小差值超过1,那么也返回-1标记不是平衡二叉树;

2023-04-26 19:10:24 25

原创 二叉树深度系列

3.确定单层逻辑,当这个节点为子节点时,那么可以直接返回1,如果这个节点左右子树有不为0时,需要进一步递归不为空的子树,在返回1+min;需要注意的是,限定死了肯定不会递归到空节点,除了根节点,防止min到空节点,导致计数错误。完全二叉树要么左子树和右子树的最大深度相同,这个时候是满二叉树,要么最大深度不同,这个时候不是满的,根据递归寻找下一个满足条件。迭代法解题,很显然,通过层序遍历,当遇到叶子节点的时候一定是最小深度;3.确定单层递归的逻辑,先求左子树的深度,再求右子树的深度。例如,n叉树的最大深度;

2023-04-25 13:12:17 23

原创 二叉树层序遍历与翻转、对称

试着使用统一风格的前序遍历(非递归遍历)来写的翻转写法,跟之前差不多写法,就是需要左右节点互换一下;非递归写法,对于广度遍历使用队列,不断入队左右节点,当然也是之前需要先交换左右节点;递归写法,把左右节点交换,并且递归左节点、右节点使得左节点、右节点做相同的操作。做的过程中对于queue队列的运用还不是很熟,116.填充每个节点的下一个右侧节点指针。102.二叉树的层序遍历。107.二叉树的层序遍历。637.二叉树的层平均值。199.二叉树的右视图。11.二叉树的最小深度。104.二叉树的深度。

2023-04-22 23:22:21 29

原创 二叉树学习与风格不统一的遍历

看了代码随想录,思路就是不断压入左节点,一旦找不到左节点,就是找到对应第一个了,这个时候才开始找右节点,就是左中右的顺序,这个不太好想,与前序遍历还是不太一样;:若左子树不空,则左子树上所有节点的值均小于它的根节点的值;若右子树不空,右子树上所有节点的值均大于它的根节点的值;:AVL树,它是一颗空树或者左右子树的高度差不多于1;:除了最底层没填满,其余每层节点数都达到最大值,最下面一层节点都集中在该层左边若干位置;前序遍历顺序:中 左 右,可以衍生顺序 :中 右 左;:深度遍历:前序、中序、后序遍历;

2023-04-18 20:10:00 29

原创 栈与队列与大顶堆、单调队列

这个题在单调栈那一系列的题也做过,但是做第二遍的时候还是有点懵哈,但是看了Carl视频发现,我的想法还停留在单调队列,没有进一步保持这个队列是绝对单调的,但是要想保持这个队列绝对单调,还需要考虑队列每个元素是在滑动窗口之内的,不能超过这个限制。最主要的是,vector< int > result ,这个存结果的数组,最好是提前定好size,后面用push_back的话,会有性能上的一点弊端,因为vector扩大内存都是双倍(看编译器)扩的,最开始不定内存的话,后续就要加内存,还要重新开启新空间等。

2023-04-17 13:45:52 49

原创 网络是怎样连接的-小笔记

目标地址记录的是接收方的信息,实际上这里的IP地址只包含表示子网的网络号部分的比特值,而表示主机号部分的比特值全部为“0”,路由器会将接收到的网络包的接收方IP地址与路由器中的目标地址进行比较,并找到相应的记录。首先,信号到达网线接口部分,其中的PHY(MAU)模块和MAC模块将信号转换为数字信号,然后包末尾的FCS进行错误校验,如果没问题则检查MAC头部中的接收方MAC地址,看看是不是发给自己的包,如果是就放到接收缓冲区中,否则就丢弃这个包。:当交换机发现一个包要回到原端口时,就会直接丢弃这个包;

2023-04-15 23:20:27 384

原创 栈与队列与模拟计算过程

很显然嘛,必须要遵循所有都能按顺序匹配上,所以用stack来依次入栈 “(” ,“[”, “{” 遇到另外三个字符就依次出栈,就好了。想一想如果没有栈,不断删除相邻且相同的字符,要废很多的精力,也许有一个思路是双指针,不断往后遍历,最后直接resize。1047.删除字符串中的所有相邻重复项。

2023-04-15 14:11:01 24

原创 栈与队列实现

1-2-3 这个时候应该是让1出来,怎么办,将前面两个数2-3 pop出去,再push进去,得到2-3-1,这个时候pop的第一个就是先进去的元素 1,剩下的2-3,仍然是之前的那个顺序,按照这个继续以上操作就好了,如果是两个队列,第二个队列也是临时队列的作用,跟上面的一个队列的实现形式还是一样的;栈的底层实现可以换成vector,list,deque,

2023-04-14 13:45:48 44

原创 字符串与KMP

下面的if条件我还没想明白是为什么可以这么做,代码随想录上是说:数组长度减去最长相同前后缀的长度相当于是第一个周期的长度,也就是一个周期的长度,如果这个周期可以被整除,就说明整个数组就是这个周期的循环。1. 学习next数组的构造,看了视频先用前缀表构造吧。next[j]对应的是以s[j]结尾的最长相等前后缀。循环过程  a a b a a b a a f。源串 a a b a a b a a f。匹配 a a b a a f。459.重复的字符串。

2023-04-13 14:57:47 28

原创 字符串与反转

看了视频,还是得有逻辑,先做删除空格,然后去反转单词,总是考虑是不是能够一次性解决这些问题;还是得一步一步来,以后要是有这种方法再学好了。进阶题:使用到了上一题的reverse。好像也可以使用库函数,毕竟中心不在reverse的编写。剑指offer.05 替换空格,这题好像就用一个新string来存储字符。344 反转字符串,可以用swap交换函数,可以用位运算来实现交换;如果不能开空间来存储,可以对string使用resize来扩大数组。剑指Offer58-II.左旋转字符串。151反转字符串中的单词。

2023-04-12 13:09:11 21

原创 Mysql实战45讲小总结

在alter table语句里面设定等待时间如果在这个指定时间里面能够拿到MDL锁最好,拿不到也不要阻塞后面的业务语句,先放弃,之后开发人员或者DNA通过重试这个命令重复这个过程。解决思路2:控制并发度,要做到数据库服务端,如果由中间件,加在中间件,对于相同行的更新,在进入引擎之前排队。:InnoDB事务中,行锁是在需要的时候加上的,并不是不需要了就释放,而是要等到事务结束时才释放。会判断在表中有多个索引时,判断用那个索引,有多表关联时,决定用各个表的连接顺序;:对于同一行数据,读加读锁,写加写锁;

2023-04-11 17:07:27 100

原创 哈希表与目标和

18.四数之和,这个相当于上面的题的扩展了吧,因为也需要去重。

2023-04-11 13:53:27 25

原创 哈希表与set、map

这道题就是用C++的STL数据结构:unordered_map做,用数组做也可以,毕竟字符串只包含小写字母。这题不用将全部的数和下标都存到map之后再去寻找,可以边存边找,毕竟可以存在的话,前面一定存在对应的数。用两个unordered_map来记录一下出现过的字符,同时可以过滤掉重复字符;哈希表遇到哈希碰撞时,主要是拉链法和线性探测法;242.有效的字母异位词。这题主要是看如何退出循环。349.两个数组的交集。

2023-04-10 10:44:50 36

原创 Mysql必知必会笔记

这里主要学习了一下where的多种用法,这个是最基本的。

2023-04-09 13:32:07 48

原创 链表与交换

19删除链表中的倒数第n个节点。24两两交换链表的节点。

2023-04-09 12:30:58 57

原创 链表与设计

第一次自己写不知道为啥在vscode上根本提交不了,一直报input参数不合题目的错误,如果一直过不了又debug不了,我就直接去看解答了。203.移除链表元素,第一次做的时候首先是考虑加个头节点,其次是更多的得考虑移除元素的时候,还要释放节点.(保持一个好习惯)看了解答的格式,又做了一遍,中途主要是忘了标记链表长度的数据在delete的时候忘了减了,所以用cout调试出来了。这题没什么问题,还是养成delete头节点的习惯。

2023-04-09 00:30:22 22

原创 数组与滑动窗口

最小覆盖子串,还是没做出来,一直调bug,但是不是这里好了,另一个用例就通不过了,还是没想全面思路。首先基本思路肯定是用哈希记录下出现 t 的字符,然后 s 中滑动窗口不断寻找子串,但是左边开始指针如何移动是个问题。904水果成篮,这题就是滑动窗口,但是用什么保存,想了一下,就是用一个二维数组,保存对应数的个数,需要退回的时候用while处理一下就好了。先做了一遍题,利用双指针做了一遍,因为最大的值一定出现在左右端,那么通过不断比较左右端点的值,可以依次将最大值放入末尾。就是O(n)的时间复杂度。

2023-04-07 14:29:54 21

原创 数组与二分

这个题一开始做的时候是没有想到思路的,但是回顾二分,它是直接除以原来的mid值,然后如果得到的值与mid相同就返回mid,最后返回right也是有点讲究的吧,按理解,right是最后小于left的,这样直接将0纳入逻辑之中处理了,而且看样例,就是需要求的是num*num

2023-04-06 10:43:31 92

原创 每天进步一点点@2023.3.28

每天进步一点点@2023.3.28。override与overload。new与malloc。

2023-03-28 23:24:24 28

原创 每天进步一点点2023.3.26

每天进步一点点2023.3.26。

2023-03-26 15:29:34 24

原创 每天进步一点点2023.3.25

每天进步一点点2023.3.25。

2023-03-25 23:07:23 33

原创 每天进步一点点2023.3.24

今天进步一点点2023.3.24。

2023-03-24 23:34:30 78 2

空空如也

空空如也

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

TA关注的人

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