- 博客(11)
- 收藏
- 关注
原创 第六章(二叉树part03)
难点:要注意回溯,移除当前节点值,因为path是引用形式,一直使用同一个path,如果不设置为引用,每次自动创建拷贝个新的path容器,遍历到最后函数结束对应函数的该path容器也销毁,此时不用写回溯弹出节点。4. 递归逻辑:先递归计算左右子树深度,再根据左右子树深度判断当前子树是否平衡。若平衡,则返回当前子树深度(左右子树深度较大值加1)。若子树不平衡,返回特定标记值(如-1)。难点:理解判断左叶子节点,要停在该节点的父节点位置进行判断。如果是,返回左子节点的值加上右子树的左叶子节点值之和,即。
2025-03-26 22:17:50
614
原创 第六章(二叉树part02)
思路递归完成前序 中->左->右 进行翻转后序 左 右 中 进行翻转迭代完成使用层序遍历,依旧是中左右的遍历顺序代码思路根节点是对称的,只需要判断根节点下面的两个节点的值,以及左节点的左孩子和右节点的右孩子(外外), 左节点的右孩子和右孩子的左节点(内内),都相同就对称。递归实现递归返回值为布尔类型,递归参数是左右子树地址。递归终止条件,空条件,都空返回true,非空条件。有一个不空或者两个不空但值不等返回false。
2025-03-26 10:20:27
665
原创 第六章(二叉树part01)
操作普通二叉树平衡二叉搜索树(AVL)插入/删除/查找O(n)O(logn)遍历(DFS/BFS)O(n)O(n)应用场景速查:动态数据集合 → 平衡二叉搜索树(如。
2025-03-25 14:21:36
618
原创 第四章(字符串part02)未完结。。
C++ String类基础操作函数功能:获取字符串长度底层实现:直接返回内部维护的_M_length成员变量时间复杂度:O(1)功能:判断字符串是否为空底层实现:检查时间复杂度:O(1)功能:清空字符串内容底层实现:设置,不释放内存时间复杂度:O(1)s.clear();子串操作函数功能:截取子串底层实现:创建新string对象复制从pos开始的len个字符需要内存分配和字符拷贝时间复杂度:O(len)功能:查找子串位置底层实现:朴素字符串匹配算法。
2025-03-20 21:45:24
1661
原创 第四章(字符串part01)
从0开始遍历,每次前进2k个距离,分两种情况反转,调用reverse函数。利用双指针法,一个i指向旧字符串的尾字符位置,一个指j向新字符的尾位置。利用string 类的resize函数,对原数组(字符串)进行扩容。从前向后遍历str[i],来给str[j]赋值。
2025-03-19 22:01:37
230
原创 第三章(哈希表part01)
哈希表的概念哈希表的概念哈希表是一种数据结构,用于存储键值对,并通过哈希函数将键映射到存储位置,以实现快速的数据访问。哈希表通常由一个数组和一个哈希函数组成。在使用哈希表时,可能会出现冲突,即不同的键映射到同一个存储位置的情况。:当发生冲突时,顺序地在哈希表中的其他位置寻找空槽来存储数据。这种方法包括线性探测、二次探测和双重散列等策略。:将哈希表的每个槽都连接成一个链表,当发生冲突时,将数据插入到对应位置的链表中。这种方法可以解决任意数量的冲突,但可能会使得哈希表的性能受到链表长度的影响。
2025-03-17 22:24:58
788
原创 第二章(链表part02)
利用快慢指针的特性,当快指针遍历到链表尾后元素时,慢指针刚好距离链表尾后指针n个距离,符合提意。需要注意的是,链表相交的节点,指的是节点的。本题可以使用快慢指针的方法来解决。,环入口到快慢指针相遇点的距离为。设链表头到环入口的距离为。,相遇点到环入口的距离为。
2025-03-15 17:44:48
747
原创 第二章(链表part01)
学习使用虚拟节点。注意头部节点可能存在的边界问题。707. 设计链表关键操作获取节点值:按索引访问节点,单链表需从头遍历,时间复杂度O(n);双向链表可根据索引位置,判断其在中间位置mid前后,选择从头部或尾部遍历,平均性能更好。插入节点:包括头插、尾插和指定位置插入。头插和尾插操作相对简单,指定位置插入需先找到插入位置,时间复杂度取决于查找位置的效率。删除节点:删除指定位置节点,同样需先定位节点,再修改指针关系,单链表删除当前节点有时需特殊处理。哨兵节点(虚拟节点)
2025-03-14 16:06:23
684
原创 第一章(数组 part02)
对于长度为n的数组arr,其前缀和数组prefixSum长度也为n表示数组arr中从索引0到索引i的所有元素之和。对于n行m列的二维数组matrix,其二维前缀和数组prefixSum是一个(n + 1)行(m + 1)列的数组(多一行一列是为了方便处理边界),表示二维数组matrix中从左上角(0, 0)到右下角所构成的子矩阵中所有元素的和。
2025-03-13 16:36:02
1679
原创 第一章(数组 part01)
思想逻辑:设置两个指针,快指针移动速度比慢指针快(比如快指针一次移动多个位置,慢指针一次移动一个位置)。快指针先跑,快速扫描数据,当快指针遇到符合某种条件(如遇到特定值、到达特定位置等)的元素时,慢指针才相应地移动并进行处理(比如记录位置、交换元素等)。通过这样不同的移动速度和时机,利用快指针的 “快” 来引导慢指针找到需要的结果,当满足一定的结束条件(如快指针到结尾、快慢指针重合等)时,就能得到问题的答案,像找出链表中间节点、删除数组中特定元素等问题都可以用这种方式解决。左闭右闭区间:右边界取尾元素。
2025-03-12 23:33:52
282
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅