[hot100 NO.31~36]

31🎈. K 个一组翻转链表

cpp 复制代码
ListNode* next = cur->next; // 保存当前节点的下一个节点,防止链表断裂
                cur->next = prev->next;     // 头插法核心:当前节点指向已反转部分的头节点
                prev->next = cur;           // 虚拟头节点的next指向当前节点(更新反转后的头)
                cur = next;                 // 遍历指针后移,处理下一个节点

逐行解释(对应例子)

代码行 核心作用 例子中的具体行为
ListNode* next = cur->next; 保护后续链表 处理 1 时,先把 2 存起来;处理 2 时,把 3 存起来;处理 3 时,把 4 存起来。如果不存,调整cur->next后就找不到后续节点了(链表断裂)。
cur->next = prev->next; 让当前节点指向已反转部分的头 处理 2 时,让 2→1(已反转的头是 1);处理 3 时,让 3→2(已反转的头是 2)。这一步是「头插」的核心:把当前节点接在已反转部分的最前面。
prev->next = cur; 更新反转部分的头为当前节点 处理 2 后,让虚拟头的 next 从 1 改成 2(新的反转头);处理 3 后,改成 3。这样外部能通过prev->next找到最新的反转头。
cur = next; 推进遍历 处理完 1 后,cur 移到 2;处理完 2 移到 3;处理完 3 移到 4,准备下一组 / 剩余节点。

32🎈. 随机链表的复制

解题思路

普通链表的节点定义如下:

本题链表的节点定义如下:

方法一:哈希表

方法二:拼接 + 拆分


33.🎈 排序链表

方法一:归并排序(分治)

方法二:归并排序(迭代)


34🎈. 合并 K 个升序链表


35🎈. LRU 缓存

写法二:标准库

二、私有成员变量解析
成员变量 类型 核心作用
capacity_ int 缓存的最大容量,限制缓存项的总数,构造函数初始化后不可动态修改(若需修改可新增接口)。
cache_list_ list<pair<int, int>> 存储实际的缓存键值对(pair<key, value>): 1. 顺序表征使用时间:头部是最近被使用的缓存项,尾部是最久未被使用的缓存项; 2. 支持 O (1) 时间的头部插入、尾部删除、指定节点删除(通过迭代器)。
cache_map_ unordered_map<int, list<pair<int, int>>::iterator> 哈希映射表: 1. 键(int):与缓存项的键一致,用于快速查询; 2. 值(list 迭代器):直接指向 cache_list_ 中对应键的节点,通过迭代器可直接操作链表节(无需遍历链表); 3. 支持 O (1) 时间的查找、插入、删除操作。

写法一:标准库


🔥二叉树🔥

36🎈. 二叉树的中序遍历

方法一:递归

方法二:迭代


相关推荐
小O的算法实验室20 小时前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
‎ദ്ദിᵔ.˛.ᵔ₎20 小时前
LIST 的相关知识
数据结构·list
M--Y21 小时前
Redis常用数据类型
数据结构·数据库·redis
郭涤生21 小时前
STL vector 扩容机制与自定义内存分配器设计分析
c++·算法
༾冬瓜大侠༿21 小时前
vector
c语言·开发语言·数据结构·c++·算法
Ricky111zzz21 小时前
leetcode学python记录1
python·算法·leetcode·职场和发展
汀、人工智能21 小时前
[特殊字符] 第58课:两个正序数组的中位数
数据结构·算法·数据库架构··数据流·两个正序数组的中位数
liu****21 小时前
第16届省赛蓝桥杯大赛C/C++大学B组(京津冀)
开发语言·数据结构·c++·算法·蓝桥杯
汀、人工智能1 天前
[特殊字符] 第79课:分割等和子集
数据结构·算法·数据库架构·位运算·哈希表·分割等和子集
汀、人工智能1 天前
[特殊字符] 第74课:完全平方数
数据结构·算法·数据库架构·图论·bfs·完全平方数