Leetcode链表题之:142环形链表的入环点
发布日期:2022-02-05 22:03:44 浏览次数:1 分类:技术文章

本文共 1029 字,大约阅读时间需要 3 分钟。

题目描述:

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。

说明:不允许修改给定的链表。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/linked-list-cycle-ii
 

解题思路及代码:

### 解题思路也是经典的快慢指针问题,首先判断该链表是否有环,无环则直接返回None;有环的话,此处有一个追及问题的规律,及两个快慢指针的相遇点到入环点的距离与头结点到入环点的距离是相等的,画个图即能看出此规律,所以下一步只要相遇点与头结点同时向前走一步,他们再次的相遇点即是循环链表入环的点。### 代码```python# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution(object):    def detectCycle(self, head):        """        :type head: ListNode        :rtype: ListNode        """        if not head or head.next == None or head == None:            return None        p, q = head.next, head.next.next        while q != p and q and q.next:            p = p.next            q = q.next.next        if q != p:            return None        p = head        while q != p:            p = p.next            q = q.next        return p

提交结果:

 

转载地址:https://blog.csdn.net/lu_yunjie/article/details/114387644 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Python基础知识回顾(上)
下一篇:面试题:合并递增链表并保持递增

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月26日 08时08分13秒