142. 环形链表 II[中等]

110 阅读1分钟

问题

找出环形链表的入口位置。

思路一

直接使用set结构,第一个重复的地方就是入口。

public class Solution {
    public ListNode detectCycle(ListNode head) {
        ListNode p = head;
        Set<ListNode> set = new HashSet<>();
        while (p != null && set.add(p)) {
            p = p.next;
        }
        return p;
    }
}

时间复杂度:O(n)

空间复杂度:O(n)

思路二

如果使用快慢指针的话,是个数学问题。

硬广告

欢迎订阅公众号:double6