环形链表2

 双指针:

# 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 head is None or head.next is None:
            return 
        slow = fast = head
        while slow and fast and fast.next :
            slow = slow.next
            fast = fast.next.next
            if slow is fast:
                break
        if fast is None or fast.next is None: #表明没有环
            return 
        tmp = head
        while tmp is not slow:
            tmp = tmp.next
            slow = slow.next
        return slow
 
语言特性:
# 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 head is None and head.next is None:
 #           return head 
        hashmap = []
        while head:
            if head in hashmap:
                return head
            hashmap.append(head)
            head = head.next
        return None
原文地址:https://www.cnblogs.com/shamoguzhou/p/15306596.html