链表中环的入口节点
题目
一个链表中包含环,如何找出环的入口结点?
思路
- 确定链表是否有环:通过两个不同速度的指针确定,当两个指针指向同一个结点时,该结点为环中的一个结点。
- 确定环中结点的数目n:指针走一圈,边走边计数
- 找到环的入口:从头结点开始,通过两个相差为n的指针来得到(即寻找链表中倒数第n个结点)
本题和 leetcode 141. Linked List Cycle 1 及 leetcode 142. Linked List Cycle 2相同
测试用例
- 功能测试 (链表包含与不包含环;链表有多个或一个节点)
- 特殊测试(头结点为null)
java代码
1 | /** |