【leetcode】Linked List Cycle (python)

題目分析見這裏

class Solution:
    # @param head, a ListNode
    # @return a list node
    def detectCycle(self, head):
        if None == head or None == head.next:
            return None
        pfast = head
        pslow = head
        #找第一次相遇的點,若存在環路,則肯定會相遇
        while pfast and pfast.next:
            pfast = pfast.next.next
            pslow = pslow.next
            if pslow == pfast: break
        if pslow != pfast:
            return None
        #pfast從頭開始,則下次相遇的點就是循環開始的點
        pfast = head
        while True:
            if pfast == pslow:
                return pfast
            pfast = pfast.next
            pslow = pslow.next
            
            
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章