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

原创 C++基础知识
其中定义与数组vector相似,因为集合中的元素不重复且个数不定,所以初始化时候后面不加任何参数,类似C语言中的数组,只是声明操作起来更方便,需要引入。会自动去掉重复的元素并将集合内的元素从小到大排好序,是集合最后一个元素的下一个位置,如果集合中不存在。有两种用法,一个参数与两个参数,上函数运行结果为。这个元素,指针最后就会移动到这个位置,也就会与。不会补充空格,可以更方便的实现字符串的拼接,用。这个元素一直找到末尾,这个值是一个指针类型,,但是遇到空格就会停止读取,而。函数,它的返回值是一个。
2024-09-01 16:27:37
403
原创 Day22 | 235. 二叉搜索树的最近公共祖先、701. 二叉搜索树中的插入操作、450. 删除二叉搜索树中的节点
本题我用的普通二叉树的最近公共祖先求法,二叉搜索树的专用求法先挖个坑后面再看卡哥视频补。
2024-10-14 15:01:54
276
1
原创 Day21 | 530. 二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236. 二叉树的最近公共祖先
因为是二叉搜索树,所以想到中序遍历方式,能够从小到大顺序遍历所有树中的元素,最小绝对值差就一定是在相邻两结点之间的差内产生,需要定义一个pre结点来记录当前遍历结点的前一个结点从而计算差值,当前两结点的绝对差如果小于现在的最小值,那就替换最小值否则不变,直到遍历完整棵树。
2024-10-14 14:24:26
253
原创 Day20 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
由于题目要求是在数组上选最大为根,该最大值左边的元素构建左子树,右边的元素构建右子树,也就是将所给数组进行合理的切分,看到二叉树的题目就想遍历顺序,这道题用先序遍历更为合适,先构造根节点再递归地构造其左子树和右子树。
2024-10-09 20:54:06
248
原创 Day18 | 513. 找树左下角的值、112.路径总和、106.从中序与后序遍历序列构造二叉树
用层序遍历,找最后一层最左边的值(也就是每次入队的第一个元素),就可以找到树左下角的值。
2024-09-29 20:02:46
365
原创 Day17 | 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和
当左子树右子树高度差超过一时,即可判断该树不是平衡二叉树,用后序遍历将左右子树的高度返回给根结点,再由上层结点判断其左右子树高度差。
2024-09-26 11:44:01
233
原创 Day16 | 104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数
要求二叉树的最大深度,想到用后序遍历来把左右子树的高度返回给根节点,再处理这个子树的高度,最后求出树高即二叉树的最大深度。
2024-09-17 10:55:48
230
原创 Day15 | 102. 二叉树的层序遍历、226.翻转二叉树、101.对称二叉树
二叉树的层序遍历由于需要一层一层的遍历,所以需要使先进入的元素先出来,即用队列的数据结构,值得注意的是需要每层入队后记录队列中的元素(即本层的元素),这样才能够每次只出队一层的元素。
2024-09-16 13:04:38
277
原创 Day14 | 94.二叉树的中序遍历、144.二叉树的前序遍历、145.二叉树的后序遍历
【代码】Day13 | 94.二叉树的中序遍历、144.二叉树的前序遍历、145.二叉树的后序遍历。
2024-09-15 10:38:22
206
原创 Day13 | 239. 滑动窗口最大值、347. 前 K 个高频元素
由于需要每个区间的最大值,想到定义一个队列将队列中的数从大到小排序,但如果定义大顶堆的话,每次区间前移弹出元素时会将最大值弹出,所以需要自定义单调队列,让队头永远最大,入队时队尾元素比入队元素大,就弹出队尾元素,否则就入队。
2024-09-13 20:01:21
212
原创 Day11 | 20.有效的括号、1047.删除字符串中的所有相邻重复项、150.逆波兰表达式求值
有关匹配问题都是栈的强项,本题思路为:在遇到左括号时压栈,遇到右括号时弹出栈顶元素看是否匹配,注意处理栈空的边界条件即可。
2024-09-09 22:42:21
236
原创 Day10 | 232.用栈实现队列、225.用队列实现栈
栈的特点是先进后出,而队列的特点是先进先出,所以用两个栈,一个先接收元素再将其中元素出栈,压入另一个栈中,即可实现队列。
2024-09-06 11:15:12
205
原创 Day9 | 28. 找出字符串中第一个匹配项的下标、459. 重复的子字符串
本题是KMP算法的经典应用,求解分为两个部分,一个是求字串的next数组,另一个是用KMP算法匹配主串和字串,求next数组时,用next[j]来求next[j+1],初值为next[0]=-1模式匹配的思路是,若在j处失配,则主串指针i不动,令字串的指针j=next[j],继续进行匹配,若最后匹配完成时j==m也就是j指向了字串的最后一位的后一位代表着字串匹配成功,否则失败特殊情况是j==0处失配,此时应将i后移一位,所以才将next[0]赋值为。
2024-09-05 14:41:36
163
原创 Day8 | 344.反转字符串、541.反转字符串II、卡码网54.替换数字、151.翻转字符串里的单词、卡码网55.右旋转字符串
要求不使用额外空间实现反转字符串,所以用双指针法,从头尾向中间移动,交换所在结点。
2024-09-05 14:19:06
367
原创 Day7 | 454.四数相加II、383.赎金信、15.三数之和、18.四数之和
本题给出四个数组要求计算有多少个不同的和为0的元组,由于只要求计算元组数量而不要求去重,所以相对来说简单一些,具体思路就是遍历前两个数组的元素将其和a+b加入到map中(用map是因为要既存值又存下标),在map中a+b的值作为key而出现的次数作为value再遍历后两个数组所有的元素和c+d,在map中找如果有满足a+b+c+d=0的项,则此项的value即为符合条件的元组的个数。
2024-09-03 13:23:21
191
原创 Day6 | 242.有效的字母异位词、349. 两个数组的交集、202.快乐数、1.两数之和
什么时候能想到用哈希法:当题目中要判断这个元素是否出现过的时候,可以用哈希表做一下映射数组setmap各自有不同的适用范围使用数组来做哈希的题目,是因为题目都限制了数值的大小,如果哈希值比较少、特别分散、跨度非常大,使用数组就造成空间的极大浪费。使用哈希值较少,特别分散,跨度较大时就可用setmap适合用key,value的情况。
2024-09-01 22:17:46
272
原创 DAY03 | 203.移除链表元素、707.设计链表、206.反转链表
移除元素时需要考虑移除的是和两种情况,如果使用虚拟头结点dummy就可以解决分类讨论的问题。
2024-08-30 16:06:34
175
原创 DAY 02 | 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II
起初受到27.移除元素这题的影响,我以为还可以在原数组上操作,这样就不需空间复杂度了,但尝试了一番之后发现还是需要一个长度与给定数组相当的新数组来存储平方后的元素,因为可能有负数的存在,这题需要数组头尾有两个指针,比较两个指针所指元素平方后的大小并把它们平方后较大的元素加入到新数组的末尾,同时移动被取元素的指针。
2024-08-28 20:15:46
340
原创 DAY04 | 24.两两交换链表中的节点、19.删除链表的倒数第N个节点、160.相交链表、142.环形链表II
大二上数据结构期末考试的题目,刚开始做的时候还是延续着去年的错误思路,因为写过反转链表的题目,所以想着这不就是把链表分成两个两个一组然后再反转,后面发现反转过后没法再把链表按照要求连起来了,就没有思路了,但其实跟前几道题有异曲同工之妙,链表的题我自己总结出来了个小规律,那就是,每次操作链表的节点都需要找到它的前驱这题同理,要注意终止条件在链表节点为奇数个时是最后一组只剩一个节点,也就是1->2->3当反转为2->1->3时就退出while循环即cur->next->next为空时;
2024-07-11 01:33:23
475
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人