欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode: 141.环形链表

程序员文章站 2022-04-04 08:31:14
...

LeetCode: 141.环形链表

做法有两种,第一种,每次遍历过一个节点就用哈希表记录一下,如果遍历的点已经被记录在哈希变中,返回True,如果whle head 退出循环,说明没有环,返回False

第二种, 使用快慢指针,快指针走两步,慢指针走一步。如果两个指针相遇了,就返回True。如果快指针遇到了None,就返回False.

  • 第一种解法
class Solution:
    def hasCycle(self, head: ListNode) -> bool:
        if not head:
            return False
        dic = {}
        while head:
            tmp = dic.get(head, None)
            if tmp:
                return True
            else:
                dic[head] = 1
            head = head.next
        return False
  • 第二种解法
class Solution:
    def hasCycle(self, head: ListNode) -> bool:
        if not head:
            return False
        p = head
        q = head.next
        while p != q:
            if q== None:
                return False
            p = p.next
            if q.next:
                q = q.next.next
            else:
                return False
        return True