- 博客(25)
- 收藏
- 关注
原创 Day27 代码随想录 | ● 93.复原IP地址 ● 78.子集 ● 90.子集II
与上一题不同集合里有重复元素了,而且求取的子集要去重。切割问题,可以使用回溯算法。
2024-02-24 22:08:29
152
原创 Day26 代码随想录| ● 39. 组合总和● 40.组合总和II● 131.分割回文串
得有去重,并且可以使用两个相同的数字,可以定义一个数组看是否使用过。
2024-02-23 21:49:54
170
原创 Day25代码随想录 | ● 216.组合总和III● 17.电话号码的字母组合
跟组合的题类似,只不过限制了和,是无序的。216.组合总和III。17.电话号码的字母组合。
2024-02-22 21:20:00
212
原创 Day23代码随想录 | ● 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树
平衡二叉搜索树:选取中间节点,奇数取中间节点,偶数取中间的哪个都可以。108.将有序数组转换为二叉搜索树。538.把二叉搜索树转换为累加树。669. 修剪二叉搜索树。
2024-02-21 22:06:46
194
原创 Day22 代码随想录 | ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点
要删的节点左不空,右为空,直接指向删除的父节点。左不空,右也不空,左孩子继位,右孩子继位都可以。235. 二叉搜索树的最近公共祖先。左为空,右不空,直接指向待删父节点。701.二叉搜索树中的插入操作。450.删除二叉搜索树中的节点。删除节点,要改变二叉树的结构。往叶子节点上插入,比较简单。②删除的节点不是叶子节点。1.没找到删除的节点。
2024-02-19 20:31:10
341
1
原创 Day 20代码随想录| 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先
二叉搜索树:中序遍历是有序的,可以先中序遍历转变成有序的数组,之后在数组中求相邻元素的最小差值,可以用两个指针直接求差不用多余的数组。利用二叉搜索树的性质,中序遍历的二叉搜索树是有序的。530.二叉搜索树的最小绝对差。236. 二叉树的最近公共祖先。501.二叉搜索树中的众数。
2024-02-17 20:49:31
133
1
原创 Day19 代码随想录 | 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树
思路:构造二叉树,使用前序遍历。700.二叉搜索树中的搜索。98.验证二叉搜索树。
2024-02-16 21:13:23
144
1
原创 Day18 代码随想录 | ● 513.找树左下角的值● 112. 路径总和 113.路径总和ii● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树
513 找树左下角的值。
2024-02-15 22:29:28
148
1
原创 Day17 代码随想录 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和
模拟递归需要一个栈,同时还需要一个栈来存放对应的遍历路径。把左叶子节点统计出来,使用中后序都可以。思路:求高度,后序遍历(求高度)257. 二叉树的所有路径。
2024-02-14 23:35:57
198
1
原创 Day16 代码随想录| 104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数
跟节点的高度就是二叉树的深度,所以可以通过后序/前序求跟节点的高度来求深度。使用层序遍历最合适,相当于记录有几层。前序求的是深度,后序求的是高度。222.完全二叉树的节点个数。559.n叉树的最大深度。111.二叉树的最小深度。104.二叉树的最大深度。
2024-02-14 20:11:37
139
1
原创 Day14 代码随想录| ● 理论基础● 递归遍历 ● 迭代遍历● 统一迭代
二叉树的主要形式:满二叉树和完全二叉树满二叉树的节点个数2的k次方-1(k是深度),满二叉树一定是完全二叉树平衡二叉搜索树:被称为AVL(Adelson-Velsky and Landis)树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。,所以map、set的增删操作时间时间复杂度是logn二叉树的存储方式链式存储:左指针,右指针顺序存储:数组,二叉树的遍历方式两种遍历方式:深度优先遍历、广度优先遍历。
2024-02-06 19:21:47
219
1
原创 Day13代码随想录 | 239. 滑动窗口最大值、 347.前 K 个高频元素
两个难点:如何求频率,如何排序,使用map存放频率以及次数,时间复杂度高,只需要对前k个进行排序即可,想到使用堆结构,使用小顶堆。时间复杂度nlogk,优于对所有的元素进行排序。思路一:移动窗口,相当于pop()一个值,之后在push()一个值,每移动一个返回队列的最大值,但是不存在这样的数据结构。思路三:使用单调队列,(自己定义一个队列),保持队列里的大小关系。思路二:使用大顶堆,没办法pop,因为元素数据改变。347.前 K 个高频元素。239. 滑动窗口最大值。
2024-02-05 21:01:18
115
1
原创 Day 10 |栈和队列理论基础、232用栈实现队列、225用队列实现栈
队列:先进先出栈:先进后出,栈不提供走访功能,也不提供迭代器(iterator)。不像是set 或者map 提供迭代器iterator来遍历所有元素,STL中栈往往不被归类为容器,而被归类为container adapter(容器适配器)
2024-02-03 22:36:52
169
1
原创 Day9 | 28. 实现 strStr()、459.重复的子字符串、字符串总结、双指针回顾
vector< char > 和 string的区别基本操作上没有区别,但是 string提供更多的字符串处理的相关接口,例如string 重载了+,而vector却没有。反转系列常用到双指针双指针法是字符串处理的常客。
2024-02-01 23:32:21
189
1
原创 Day 8| 代码随想录344.反转字符串、541. 反转字符串II、卡码网:54.替换数字、 151.翻转字符串里的单词、卡码网:55.右旋转字符串
思路:i 每次移动 2 * k,判断是否有反转的空间。用双指针法(今天脑子疼,思路简写)541. 反转字符串II。卡码网:54.替换数字。
2024-01-31 20:20:59
85
原创 Day6代码随想录 | 哈希表理论基础、242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、 1. 两数之和
当题目中出现不重复需求时,想到哈希法(数组,set,map...)
2024-01-29 23:22:12
119
原创 代码随想录Day3|链表的基础
链表的类型:单链表、双链表、循环链表(约瑟夫环问题)链表的存储方式:不连续链表的定义:可以不构造函数,C++有默认的构造函数,但是不会初始化任何成员变量,即若不构造函数,则初始化时不能直接给变量赋值链表操作删除链表:直接next指针指向下一个节点(C++需要释放这个节点)添加节点,可以画图理解。203.移除链表元素。
2024-01-26 23:34:20
546
1
原创 Day2代码随想录 | 有序数组的平方、长度最小的子数组、螺旋矩阵II
感觉滑动窗口还是双指针的变形,之后感觉那个矩阵有点像是在找规律,还是得多学多练吧!
2024-01-25 22:31:06
122
原创 代码随想录第一天 | 数组基础知识 、二分查找、移除元素
这两个题都用到了两个指针的方法,这种思想值得借鉴,有时总想着从一边遍历,以后应该想到多借助个“工具”可能效果更好,有一种“男女搭配,干活不累“的感觉哈哈哈哈哈。还有就是自己的代码能力真的很差,需要加强一下。最后,这是第一天。前路漫漫,道阻且长,加油!
2024-01-24 14:10:15
499
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人