当前位置: 首页 > 图灵资讯 > 技术篇> #yyds干货盘点# LeetCode程序员面试金典:环形链表 II

#yyds干货盘点# LeetCode程序员面试金典:环形链表 II

来源:图灵教育
时间:2023-06-27 15:08:45

题目:

给定链表的头节点 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;    }}