Hot100:排序链表(Sort List)链表归并排序 ACERS 解析

副标题 / 摘要 LeetCode 148 的核心不是“会排序”,而是“在链表结构里选对排序算法”。数组可随机访问适合快排/堆排,而单链表最匹配的是归并排序:找中点、递归分治、线性归并。 预计阅读时长:12~16 分钟 标签:Hot100、链表、归并排序、分治 SEO 关键词:Sort List, 排序链表, 链表归并排序, LeetCode 148, Hot100 元描述:用链表归并排序在 O(n log n) 内完成排序,覆盖思路推导、工程迁移、复杂度分析和多语言可运行实现。 A — Algorithm(题目与算法) 题目还原 给你链表头节点 head,请将其按升序排序并返回排序后的链表。 要求时间复杂度为 O(n log n)。 输入输出 名称 类型 描述 head ListNode 单链表头节点(可能为空) 返回 ListNode 升序排序后的头节点 示例 1 输入: 4 -> 2 -> 1 -> 3 输出: 1 -> 2 -> 3 -> 4 示例 2 输入: -1 -> 5 -> 3 -> 4 -> 0 输出: -1 -> 0 -> 3 -> 4 -> 5 目标读者 正在刷 Hot100,想把链表题模板系统化的同学 做链表题经常在“切分和拼接”环节出错的开发者 想搞清楚“为什么链表排序优先用归并”而不是快排的人 背景 / 动机 链表排序在工程里并不罕见: ...

2026年2月10日 · 8 分钟 · map[name:Jeanphilo]

Hot100:合并K个升序链表(Merge k Sorted Lists)分治归并 O(N log k) ACERS 解析

副标题 / 摘要 这题本质是“k 路归并”。如果直接一条条串行并入,性能会退化;用分治按二叉树方式两两合并,能把复杂度优化到 O(N log k)。本文按 ACERS 模板把思路推导、工程映射和多语言实现一次讲透。 预计阅读时长:12~16 分钟 标签:Hot100、链表、分治、归并 SEO 关键词:Merge k Sorted Lists, 合并K个升序链表, 分治归并, LeetCode 23, O(N log k) 元描述:从串行归并到分治归并,系统讲解 LeetCode 23 的最优复杂度解法与工程实践。 A — Algorithm(题目与算法) 题目还原 给你一个链表数组 lists,每个链表都按升序排列。 请将所有链表合并到一个升序链表中,并返回合并后的头节点。 输入输出 名称 类型 描述 lists ListNode[] k 条升序链表,元素可为空 返回 ListNode 合并后的升序链表头节点 示例 1 输入: lists = [[1,4,5],[1,3,4],[2,6]] 输出: [1,1,2,3,4,4,5,6] 示例 2 输入: lists = [] 输出: [] 目标读者 正在刷 Hot100,已经掌握 LeetCode 21 的同学 想把“双链表归并”升级为“k 路归并模板”的开发者 在服务端做多路有序流合并(日志、时间线、分片结果)的工程师 背景 / 动机 LeetCode 23 是 LeetCode 21 的自然升级版: ...

2026年2月10日 · 11 分钟 · map[name:Jeanphilo]

Hot100:K 个一组翻转链表(Reverse Nodes in k-Group)分组反转 ACERS 解析

副标题 / 摘要 LeetCode 25 是“整链反转(206)”与“区间反转(92)”的组合升级:你要按组切分、组内反转、组间拼接,并正确处理不足 k 的尾组。本文用 ACERS 模板给出工程可复用解法。 预计阅读时长:14~18 分钟 标签:Hot100、链表、分组反转、哑节点 SEO 关键词:Reverse Nodes in k-Group, K 个一组翻转链表, 分组反转, LeetCode 25, Hot100 元描述:K 组链表原地反转模板:分组扫描 + 区间反转 + 安全拼接,含复杂度分析、常见坑与多语言代码。 A — Algorithm(题目与算法) 题目还原 给你链表头节点 head 和整数 k,每 k 个节点一组进行翻转,返回修改后的链表。 若剩余节点数不足 k,则保持原顺序不变。 要求只能改节点指针,不允许只改节点值。 输入输出 名称 类型 描述 head ListNode 单链表头节点 k int 每组大小(k >= 1) 返回 ListNode 分组翻转后的新头节点 示例 1 输入: head = 1 -> 2 -> 3 -> 4 -> 5, k = 2 输出: 2 -> 1 -> 4 -> 3 -> 5 示例 2 输入: head = 1 -> 2 -> 3 -> 4 -> 5, k = 3 输出: 3 -> 2 -> 1 -> 4 -> 5 目标读者 已掌握 206 / 92,希望攻克“多区间连续反转”的 Hot100 学习者 链表题常在边界和拼接步骤出错的中级开发者 需要构建稳定“链表分段处理”模板的工程师 背景 / 动机 在工程里,链式结构的批处理并不少见: ...

2026年2月10日 · 9 分钟 · map[name:Jeanphilo]

反转链表 II(Reverse Linked List II)哑节点+头插法 ACERS 解析

副标题 / 摘要 反转链表 II 的关键不在“会反转”,而在“只反转中间一段且不破坏两端连接”。本文用 ACERS 结构讲清哑节点定位、头插法重排与边界处理,给出可复用模板与多语言代码。 预计阅读时长:12~15 分钟 标签:链表、区间反转、哑节点 SEO 关键词:Reverse Linked List II, 反转链表 II, 区间反转, 哑节点, 头插法, LeetCode 92 元描述:单链表区间反转的工程化模板:哑节点 + 头插法,O(n)/O(1),附推导、常见坑与多语言实现。 目标读者 已会 206 反转链表,想进一步掌握“局部反转”的同学 经常在链表题里卡边界(left=1、right=n)的中级开发者 希望把链表指针操作做成稳定模板的工程师 背景 / 动机 Reverse Linked List(206)是“整条反转”,而 92 要求“只反转一个闭区间”。 这类“局部重排”在工程里非常常见: 任务链中的某个分段要逆序重放 事件日志只对一段做回滚重连 数据结构需要在不重建节点的前提下原地调整 难点并非复杂算法,而是: 找准区间前驱与区间首节点 反转过程中不丢失后续链路 区间反转后把前后两端重新接回去 核心概念 哑节点(dummy):统一处理 left = 1 场景,避免头节点特判地狱 前驱指针 prev:最终停在第 left-1 个节点(若 left=1 则停在 dummy) 当前指针 cur:初始为区间首节点 prev.next 头插法(head insertion):每次把 cur 后面的一个节点摘下,插到 prev 后面 A — Algorithm(题目与算法) 题目还原 给你单链表的头节点 head 和两个整数 left、right(1 <= left <= right <= n), 请你反转从位置 left 到位置 right 的链表节点,返回反转后的链表。 ...

2026年2月10日 · 7 分钟 · map[name:Jeanphilo]

.dao 域名怎么选:ICANN、ENS、Handshake 一次讲清

副标题 / 摘要 很多人第一次问 .dao 都会卡在同一个问题:为什么能看到 .dao 名字,却在传统域名平台买不到?本文把历史体系、当前可行路径和工程决策一次讲清,并给出可执行的选择建议。 目标读者 准备做 DAO / Web3 社区品牌命名的团队 想提前占名字(品牌保护、投资、收藏)的人 需要同时兼顾 Web2 用户可访问性和 Web3 身份系统的开发者 背景 / 动机 域名后缀看起来只是一个“字符串后缀”,但背后其实是两套完全不同的体系: 传统 DNS(ICANN 体系) 去中心化命名(ENS / Handshake 等) .dao 的争议,本质是“你要的是哪套体系里的所有权与可访问性”。 如果这个问题没想清楚,常见后果是: 花钱买了一个“看起来像 .dao”的名字,但普通用户根本打不开 只做了 Web3 名称,结果官网访问体验断层 把子域名当作顶级域名,长期品牌资产受制于平台 核心概念(先统一术语) TLD(顶级域名):如 .com、.org、.cn gTLD:通用顶级域名(如 .com、.net) ccTLD:国家/地区顶级域名(如 .cn、.jp) New gTLD:2012 年后新增大量后缀(如 .xyz、.app、.ai) ENS 名称:以 .eth 结尾的链上名称系统(如 mydao.eth) 子域名:如 xxx.dao.xyz,本质依赖父域名持有方 一、域名后缀是怎么来的? 在传统互联网里,顶级后缀需要通过 ICANN 体系审批并由注册局运营。 这意味着“一个后缀能否成为主流浏览器原生可访问的顶级域名”,不是随便命名就能生效。 常见分类: 传统 gTLD:.com、.org、.net 国家域名 ccTLD:.cn、.jp 等 新通用域名 New gTLD:.xyz、.club、.app、.ai 等 二、.dao 的现实状态 截至目前的常见实践,.dao 不是 ICANN 体系里的主流正式顶级域名。 因此你通常无法在主流传统注册商直接买到“标准 DNS 意义下的 .dao 顶级域名”。 ...

2026年2月10日 · 2 分钟 · map[name:Jeanphilo]

图算法专题学习路径:从 BFS 到图计算模型

这是一页“图算法专题导航”。目标不是把文章堆在一起,而是给你一条从基础遍历到分布式图计算的可执行学习路径。 目录现状(已完成专题化) 图算法系列已迁移到: content/zh/dev/algorithm/graph/ 并采用两位数字前缀(00/10/20...)做阅读顺序标识,方便: 文件系统内按顺序浏览 后续增量插入新文章(可保留编号间隔) 批量维护时快速定位阶段 推荐阅读顺序(按能力建设) 第 0 阶段:遍历基本功(先打地基) BFS / DFS 工程入门:k-hop 查询、子图抽取与路径可达性 最短路径实战:BFS、Dijkstra、A* 的工程化选型 目标: 能稳定写出迭代版图遍历; 能解释什么时候用 BFS、什么时候用 Dijkstra/A*; 习惯加 early stop、visited、预算限制。 第 1 阶段:可达性与连通结构(图查询核心) k-hop 与可达性查询:BFS 限制、Reachability 索引与 2-hop Labeling Connected Components 与 SCC:Tarjan / Kosaraju 目标: 把“能不能到达”从一次搜索升级成系统能力; 理解无向连通与有向强连通是两类不同问题; 建立“在线 BFS + 离线索引”的组合思维。 第 2 阶段:图分析指标(从可达走向洞察) 图中心性:Degree / Betweenness / Closeness PageRank / Personalized PageRank:节点重要性与增量更新 目标: 能解释“重要性”的不同定义与适用边界; 能把中心性与 PageRank 用在推荐/风控/影响力分析; 理解“指标正确”和“平台能跑”是两回事。 第 3 阶段:结构挖掘与匹配(应用层能力) 子图匹配:VF2、Ullmann 与剪枝 社区发现:Louvain 与 Label Propagation 目标: ...

2026年2月9日 · 1 分钟 · map[name:Jeanphilo]

图计算模型实战:Pregel(BSP)与 GAS,PageRank/CC/并行 BFS 怎么跑

系统讲解 Pregel(BSP)与 GAS(Gather-Apply-Scatter)两大图计算模型,重点落到 PageRank、Connected Components 和并行 BFS 的执行路径、收敛策略与工程取舍。

2026年2月9日 · 8 分钟 · map[name:Jeanphilo]

图分区算法:Edge-cut vs Vertex-cut 与 METIS 工程解析

从 Edge-cut/Vertex-cut 目标函数出发,系统讲解 METIS 多层分区思想与工程落地,重点解释分区如何影响查询延迟和跨机通信量。

2026年2月9日 · 8 分钟 · map[name:Jeanphilo]

动态图与增量计算:增量最短路径、增量 PageRank、连通性维护 ACERS 解析

副标题 / 摘要 动态图场景里,真正的痛点不是“会不会算法”,而是“更新来了能不能顶住”。本文按 ACERS 模板讲透三件工程必修:增量最短路径、增量 PageRank、连通性维护,以及三条现实策略:局部重算、延迟更新、近似结果。 预计阅读时长:14~18 分钟 标签:动态图、增量计算、最短路径、PageRank、连通性维护 SEO 关键词:动态图, 增量最短路径, 增量 PageRank, 连通性维护, 局部重算, 延迟更新, 近似结果 元描述:动态图工程指南:在高频更新场景下如何用增量算法与工程策略控制时延和成本。 目标读者 做图数据库、关系图、推荐图在线服务的工程师 从离线图计算转向实时增量计算的开发者 想把“全量重算”改造成“可上线更新流水线”的技术负责人 背景 / 动机 静态图算法在论文里很优雅,但真实系统里图是不断变化的: 用户关系新增/删除 交易边持续流入 内容图和知识图谱持续更新 工程上 80% 的痛点就在这里: 全量重算太慢,赶不上更新速率 在线强一致代价太高,P99 失控 业务只要“可用近似”,却在做“昂贵精确” 所以核心问题变成: 不是怎么把答案算出来,而是怎么在更新流下持续算得动。 核心概念 概念 含义 工程关注点 增量最短路径 边/点更新后只修复受影响区域 影响域检测、局部重算 增量 PageRank 图更新后迭代残差局部传播 残差阈值、批量窗口 连通性维护 动态维护是否连通/分量变化 插入快、删除难 局部重算 只对受影响子图重新计算 降低 CPU/内存 延迟更新 把更新合并成批次统一处理 吞吐优先、可控延迟 近似结果 用误差边界换计算成本 SLA 与精度平衡 A — Algorithm(题目与算法) 题目还原(工程化) 给定一个持续更新的图 G_t=(V_t,E_t) 和操作流: ...

2026年2月9日 · 5 分钟 · map[name:Jeanphilo]

社区发现入门:Louvain 与 Label Propagation 的工程化选型 ACERS 解析

副标题 / 摘要 社区发现不是“把图分几堆”这么简单,而是要在准确性、可解释性、速度和可维护性之间做平衡。本文按 ACERS 结构拆解两种工程最常见算法:Louvain(模块度优化) 与 Label Propagation(标签传播)。 预计阅读时长:12~16 分钟 标签:社区发现、Louvain、Label Propagation、图分区 SEO 关键词:community detection, Louvain, Label Propagation, modularity, graph partition 元描述:社区发现工程入门:Louvain 与 LPA 的原理、复杂度、选型与落地模板,覆盖群体识别、图分区、冷启动分析。 目标读者 做社交图、风控图、推荐系统图分析的工程师 想把“社区发现”从论文概念落到生产实践的开发者 需要在“图分区/冷启动”场景做群体结构建模的人 背景 / 动机 社区发现在工程里很常见: 群体识别:识别强关联账号簇、异常团伙、兴趣圈层 图分区:把高连通子图放在同一分片,减少跨分片通信 冷启动分析:新用户/新实体通过邻域社区快速归类 痛点在于: 全局最优通常不可得(NP-hard 相关目标) 数据规模大、更新快,离线算法难以频繁重跑 不同业务对“稳定性/速度/解释性”优先级不同 所以工程上最常见的两类方法是: Louvain:追求较高质量社区(模块度) Label Propagation (LPA):追求速度与简单实现 核心概念 概念 含义 工程影响 Community 内部边密、外部边疏的节点集合 影响分区与推荐质量 Modularity(Q) 度量社区划分质量的指标 Louvain 优化目标 Label Propagation 节点迭代采用邻居主流标签 速度快、结果有随机性 Graph Partition 按社区切分存储/计算 降低跨机通信成本 Cold Start 用邻域结构给新节点快速归群 提升启动期召回 A — Algorithm(题目与算法) 题目还原(工程抽象版) 给定无向图 G=(V,E),输出每个节点所属社区 ID,并支持以下用途: ...

2026年2月9日 · 5 分钟 · map[name:Jeanphilo]