面试Leetcode - Linked List 链表

📅 2026/8/19 14:19:30
面试Leetcode - Linked List 链表
Linked ListLinked List 是由多个Node节点组成的线性结构每个 Node 存储数据 指向下一个 Node 的引用。每个节点Node:valuenextArray数据挨在一起用 index 找Linked List数据散落各处用指针串起来Array:[10][20][30][40]Linked List:------------| 10 | next | ----------------------------| 20 | next | ----------------------------| 30 | next | --- None------------Nodeclass Node:def __init__(self, val):self.val valself.next None创建节点node1 Node(10)node2 Node(20)node1.next node2 # 10 - 20 - NoneHead链表没有 index 所以需要一个入口 Head 来表示链表第一个节点例如head node1head|v10 - 20 - 30 - None只要知道 head就能访问整个链表。做题感觉链表题有点偏好指针哇找中点: 快慢指针合并升序链表双指针环形链表判断链表是否有环快慢指针→ 相遇推导假设链表是head↓head↓A → B → C → D → E↑ ↓└──── ─┘C是环入口假设第一次相遇在Ehead|| a↓入口↓ b● ← 第一次相遇|| c↓└────────→ 入口a head → 环入口的距离也就是A → B → C 从A走到C 两步a2b环入口 → 第一次相遇点的距离c第一次相遇点 → 环入口的距离环的长度Lbc先跳过推导总之从 head 走a步到入口从第一次相遇点走c步也到入口。而由于a和c在环长意义下是对应的所以两个指针分别从 head 和相遇点出发以同样速度走就会同时到达入口。