标签:链表

数据结构与算法刷题之【链表】篇

<p>汇总链表相关的数据结构与算法刷题笔记,涵盖单链表基础、反转、环形检测、合并等经典题型,结合剑指offer与力扣题目讲解双指针、虚拟头节点等常用解题技巧。</p>

数据结构与算法刷题之【双指针】篇

<p>汇总双指针相关的数据结构与算法刷题笔记,讲解快慢指针、左右指针与对撞指针的使用场景,涵盖回文判断、去重、区间等经典题型并给出Java实现与复杂度分析。</p>

leetcode【链表—简单】203.移除链表元素

<p>讲解LeetCode 203移除链表元素的解题过程,分析使用虚拟头节点统一处理删除头节点与中间节点的情况,给出Java代码、复杂度分析与本地调试方式,帮助理解链表删除操作与虚拟头节点的作用。</p>

leetcode【链表—中等】707.设计链表

<p>讲解LeetCode 707设计链表的解题过程,分析如何用单链表或双链表实现get、addAtHead、addAtTail、addAtIndex、deleteAtIndex等操作,给出Java实现与边界处理细节,通过手写链表加深对指针操作、索引边界与增删改查流程的理解,适合作为数据结构设计类题目的练</p>

leetcode【链表—简单】206.反转链表

<p>本文记录 LeetCode 206 反转链表的解题过程,题目要求反转单链表并返回新头节点。文章先给出题目描述与本地调试代码,再分别讲解双指针迭代法与递归两种解法,分析指针移动与递归终止条件,并配图说明反转过程,适合链表基础入门练习参考。</p>

leetcode【链表—中等】24.两两交换链表中的节点

<p>本文讲解 LeetCode 24 两两交换链表中的节点,要求实际交换相邻节点而非只改节点值。文章给出题目描述和本地调试代码,并详细分析三指针移动、虚拟头节点以及递归三种解法,配合图解说明指针移动与边界处理,帮助掌握链表节点交换的通用套路。</p>

leetcode【链表—中等】19.删除链表的倒数第N个节点

<p>本文记录 LeetCode 19 删除链表倒数第 N 个节点的解法,进阶要求一趟扫描完成。文章给出题目描述与调试代码,重点讲解虚拟头节点配合快慢指针的方法,先让快指针走 N 步再同步移动,从而定位待删除节点的前驱并完成删除操作。</p>

leetcode【链表—简单】07.链表相交

<p>本文讲解面试题 02.07 链表相交,要求找出两个单链表相交的起始节点。文章给出题目描述和本地调试代码,介绍差值移动比较法:先分别求两链表长度,让较长的链表先走差值步,再同步向后比较节点对象,时间复杂度为 O(n+m)。</p>

leetcode【链表—中等】142.环形链表 II

<p>本文记录 LeetCode 142 环形链表 II 的解题过程,需返回链表入环的第一个节点。文章给出题目描述与调试代码,重点讲解快慢指针法,通过数学推导证明相遇点与头节点同步移动可找到入环点,并用图解辅助理解 O(1) 空间的解法。</p>

LeetCode 21. 合并两个有序链表

<p>本文讲解 LeetCode 第 21 题「合并两个有序链表」,通过设置虚拟头节点,双指针比较两个链表当前节点值,将较小者依次接入新链表,最后拼接剩余部分,给出 O(n) 时间复杂度的 Java 实现与图解。</p>

LeetCode 141. 环形链表

<p>本文讲解 LeetCode 第 141 题「环形链表」,判断链表中是否存在环。分别给出哈希表与快慢指针两种解法:哈希表记录访问过的节点,快慢指针则利用速度差在 O(1) 空间内判断是否相遇,并附完整 Java 代码与图解。</p>

LeetCode 160. 相交链表

<p>本文讲解 LeetCode 第 160 题「相交链表」,找出两个单链表相交的起始节点。给出同步后缀比较、哈希集合与双指针三种解法,其中双指针利用两链表路程互补的特性,在 O(m+n) 时间、O(1) 空间内求得交点。</p>

LeetCode 234. 回文链表

<p>本文讲解 LeetCode 第 234 题「回文链表」,判断单链表是否为回文结构。给出复制到数组双指针比对与反转前半链表两种解法,后者利用快慢指针定位中点并原地反转,实现 O(n) 时间、O(1) 空间。</p>