• Leetcode练习(Python):链表类:第142题:环形链表 II:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。


    题目:
    环形链表 II:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。  为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。  说明:不允许修改给定的链表。 
    进阶:
    你是否可以不用额外空间解决此题?
    思路:
    环形链表的常用阶梯思路,使用快慢指针,快指针是慢指针速度的两倍,然后寻找是否成环,成环之后将快指针放到原地,将慢指针重回开始位置,按照正常的速度进行寻找,可以找到成环点。
    程序:
    # 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:
            if not head:
                return None
            if not head.next:
                return None
            index1 = head
            index2 = head
            while index2 and index2.next:
                index1 = index1.next
                index2 = index2.next.next
                if index1 == index2:
                    break
            if index1 != index2:
                return None
            index1 = head
            while index1 != index2:
                index1 = index1.next
                index2 = index2.next
            return index1
  • 相关阅读:
    Windows Phone 31 日谈——第18日:WebBrowser控件
    Windows Phone 31 日谈——第19日:推送通知
    使用bat文件启动服务
    绝代反向指标——丘吉尔 炒股第二天就崩盘
    插入数据库返回自增长序号
    大并发服务器开发
    在这个不相信爱情的时代里,巴菲特的故事似乎让我又相信爱情了
    mysql操作语句
    马云三历高考才进大学 第一次高考数学考1分
    俞敏洪的屌丝逆袭 大学考了三次进北大
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12821068.html
Copyright © 2020-2023  润新知