题目:
给定链表的头节点 head,返回链表开始进入环的第一个节点。若链表无环,则返回null。
如果链表中有节点,可以连续跟踪 next 如果指针再次到达,链表中就会有一个环。 为了表示给定链表中的环,评估系统内部使用整数 pos 表示链表尾连接到链表的位置(索引从 0 开始)。如果 pos 是 -1.链表中没有环。注意:pos 传输不作为参数,只是为了识别链表的实际情况。
不允许修改 链表。
示例 1:
输入:head = [3,2,0,-4], pos = 1
输出:返回索引为 1 的链表节点
说明:链表中有一个环,尾部连接到第二个节点。
示例2:
输入:head = [1,2], pos = 0
输出:返回索引为 0 的链表节点
说明:链表中有一个环,尾部连接到第一个节点。
示例 3:
输入:head = [1], pos = -1
输出:返回 null
说明:链表中没有环。
代码实现:
public class Solution { public ListNode detectCycle(ListNode head) { ListNode pos = head; Set<ListNode> visited = new HashSet<ListNode>(); while (pos != null) { if (visited.contains(pos)) { return pos; } else { visited.add(pos); } pos = pos.next; } return null; }}
