美文网首页
python实现leetcode之142. 环形链表 II

python实现leetcode之142. 环形链表 II

作者: 深圳都这么冷 | 来源:发表于2021-10-14 00:08 被阅读0次

解题思路

两步走:
第一步,检测是不是有环,使用快慢指针
第二步,再从头开始一个慢指针,第一步的慢指针继续

假设第一步走了n轮,即slow经过了n个节点,那fast就经历了2n个节点
则,在第二步中,再继续n轮,slow就到fast的位置,head就到slow第一步结束的位置,此时相遇
此时slow和head同时退x个节点到他们第一次相遇的位置,就是我们循环的条件

142. 环形链表 II

代码

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def detectCycle(self, head: ListNode) -> ListNode:
        slow = fast = head
        while fast and fast.next:
            slow = slow.next
            fast = fast.next.next
            if slow == fast: break
        # 至此,slow看过了n个结点,fast看过2n个结点
        # 如果重新从头开始一个结点head,与slow同样的速度
        # 过了n个结点之后,slow就是之前的fast,head只就是slow,显然相遇
        if fast and fast.next:
            while head != slow:
                head = head.next
                slow = slow.next
            return head
        else:
            return None
效果图

相关文章

  • LeetCode 142 环形链表 II Linked List

    有关链表的LeetCode做题笔记合集,Python实现 链表定义 142. 环形链表 II Linked Lis...

  • 获取有环单向列表环入口的结点(双指针法)

    LeetCode 141.环形链表 142.环形链表II 对题目不熟悉的同学,可以先刷下题,结合LeetCode上...

  • TOP100

    142. 环形链表 II[https://leetcode-cn.com/problems/linked-list...

  • LeetCode:142. 环形链表 II

    问题链接 142. 环形链表 II[https://leetcode-cn.com/problems/linked...

  • 142. 环形链表 II

    题目地址(142. 环形链表 II) https://leetcode.cn/problems/linked-li...

  • python实现leetcode之142. 环形链表 II

    解题思路 两步走:第一步,检测是不是有环,使用快慢指针第二步,再从头开始一个慢指针,第一步的慢指针继续 假设第一步...

  • 双指针

    一、双指针总结 1.1题目 快慢指针(主要解决链表中的问题) 141.环形链表 142.环形链表 II 876.链...

  • LeetCode 142. 环形链表 II

    142. 环形链表 II 给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链...

  • LeetCode 142. 环形链表 II

    给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数...

  • leetcode 142. 环形链表 II

    题目描述 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我...

网友评论

      本文标题:python实现leetcode之142. 环形链表 II

      本文链接:https://www.haomeiwen.com/subject/zapdoltx.html