LeetCode142 环形链表II

LeetCode142 环形链表II(返回链表入环的第一个节点)

1. 问题描述

LeetCode142 环形链表II_第1张图片
LeetCode142 环形链表II_第2张图片

2. 思路

快慢指针

一个指针从快慢指针相遇的节点,另一个指针从头节点出发,进行遍历,直到再次相遇,即为节点

3. 代码

func detectCycle(head *ListNode) *ListNode {
	slow, fast := head, head

	for fast != nil && fast.Next != nil {
		slow = slow.Next
		fast = fast.Next.Next
		if slow == fast {
			cur := head
			for slow != cur {
				slow = slow.Next
				cur = cur.Next
			}
			return slow
		}
	}
	return nil
}

你可能感兴趣的:(leetcode刷题,链表,leetcode,数据结构)