leetcode-环形链表

发布时间:2024年01月21日

141. 环形链表

题解:

这个问题可以使用快慢指针的方法来解决。首先,我们创建一个虚拟头节点,并将虚拟头节点的下一个节点指向head。然后我们创建两个指针,一个快指针和一个慢指针。快指针每次移动两个节点,而慢指针每次移动一个节点。如果链表中存在环,那么快指针和慢指针最终会在环内的某个位置相遇。如果链表中不存在环,那么快指针会先到达链表的尾部。

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

class Solution:
    def hasCycle(self, head: Optional[ListNode]) -> bool:
        if not head or not head.next:
            return False
        dummy_head = ListNode(0)
        dummy_head.next = head

        slow = dummy_head
        fast = dummy_head.next

        while slow != fast:
            if not fast or not fast.next:
                return False
            slow = slow.next
            fast = fast.next.next
        return True

文章来源:https://blog.csdn.net/weixin_33631777/article/details/135730034
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。