- 博客(8)
- 收藏
- 关注
原创 数据结构-跳表
步骤作用1. 查找 + 记录update找到每层的插入前驱2. (可选)检查重复根据需求决定是否去重3. 随机生成高度决定新节点“能上几层楼”4. 扩展 update 高层处理新高度超过当前最大层的情况5. 多层链表插入在 0 ~ newLevel 层完成插入删除函数:核心思想:先找到要删的节点,再从它出现的所有层中“剪掉”它,最后清理高层空链。核心思想:“用空间换时间 + 随机化代替平衡”普通有序链表:只能逐个遍历 → O(n)
2025-12-30 18:49:09
825
原创 数据结构-链表3
动态结构:节点在内存中非连续存储,通过 next 指针连接。无随机访问:不能像数组那样 O(1) 访问第 k 个元素,必须从头遍历。
2025-12-23 21:50:47
914
1
原创 数据结构-链表2
关键是初始化的地方,可能有的同学会不理解, 可以看到双指针法中初始化 cur = head,pre = NULL,在递归法中可以从如下代码看出初始化的逻辑也是一样的,只不过写法变了。为什么要保存一下这个节点呢,因为接下来要改变 cur->next 的指向了,将cur->next 指向pre ,此时已经反转了第一个节点了。最后,cur 指针已经指向了null,循环结束,链表也反转完毕了。示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL。
2025-12-22 20:06:38
957
1
原创 力扣:删除排序数组中的重复项
所以我们就得考虑怎么实现,首先如果要找数组中的每一个唯一元素,我们就得遍历整个数组,假如你想要用两个for循环去遍历数组去找,那必然时间复杂度会很高。这时候我们就应该想到用双指针法去删除重复元素,将后面的元素放在前面,定义两个指针 b 和 a 分别为快指针和慢指针,快指针表示遍历数组到达的下标位置,慢指针表示下一个不同元素要填入的下标位置的前一个,快指针在每一次循环都向前走,当快指针和满指针指向的值不相同时,就执行*++a=*b;,我们找到多少个快指针与满指针不同的值,也就是执行多少次*++a=*b;
2025-12-03 22:03:09
181
原创 面试中碰到的一些问题
本文摘要: C++标准模板库包含容器、迭代器、算法等组件,支持多种数据结构和操作方式 单例模式确保类只有一个实例,具有线程安全、自动析构等优点 内存对齐提升CPU访问效率,保证程序正确性和兼容性 进程是资源分配单位,线程是执行单位,两者在隔离性、通信方式等方面存在差异 HTTP状态码分为5类,分别表示不同响应状态 GET和POST在语义、参数位置、安全性等方面存在显著差异 new/malloc在异常处理、构造析构调用等方面有区别 关键字定义语句结构,操作符表示数据关系 物理层负责比特流与物理信号的转换
2025-12-03 08:04:12
218
原创 结构体 基础
程序开发人员可以使用结构体来封装一些属性,设计出新的类型,结构体是一些值的集合,这些值成为成员变量。结构体的每个成员都可以是不同类型的变量也可以自定义名字,Struct是结构体的。2.结构体指针—>结构体成员名(传地址)1.结构体变量.结构体成员名(传值)访问结构体成员的两种方式。定义结构体变量并初始化。
2024-05-11 15:13:43
254
1
原创 指针的用法
我们知道一级指针是用来存储地址的,其实一级指针也是个变量,他也有自身的地址,存储普通变量的指针我们称之为一级指针变量,存储一级指针变量地址的变量我们称之为二级指针变量,以此类推三级指针多级指针都是这个道理,只要掌握了二级指针,多级指针也不在话下,看完下面这个代码你就明白了。3. * 可以用来解引用,解引用是通过指针访问指针所指向的内存地址中存储的数据的操作,通俗一点讲就是顺着指针存放的地址找到这个地址上存放的值。一.每当提到指针,我们都会想起 * 符号,想要搞明白指针,首先就要明白 * 的用法。
2024-05-08 18:35:09
211
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅