LeetCode(No.141)--环形链表

给定一个链表,判断链表中是否有环。

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

在这里插入图片描述
在这里插入图片描述
方法1:
思路: 判断每个节点的下一个节点是否在前面出现过

方法2:
思路: 创建两个节点,第一个慢节点单步走,第二个快节点两步走,如果没有环,则快节点会首先走到链表尾,退出循环,返回False。如果存在环,则快节点会再第二圈或者第三圈的地方追上慢节点,直到两者相等,则返回True。

class Solution(object):
    def hasCycle(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        # 空或者单一个的时候
        if head == None or head.next == None:
            return False

        first = second = head
        while second and second.next:
            first = first.next
            second = second.next.next
            if first == second:
                return True
        return False
发布了114 篇原创文章 · 获赞 55 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/zuolixiangfisher/article/details/87477928