zoukankan      html  css  js  c++  java
  • 力扣-41-环形链表

    问题:

    # 给定一个链表,判断链表中是否有环。 
    #
    # 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的
    # 位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。
    #
    # 如果链表中存在环,则返回 true 。 否则,返回 false 。

    方法一:暴力,hash/set

    # leetcode submit region begin(Prohibit modification and deletion)
    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution(object):
        def hasCycle(self, head):
            """
            :type head: ListNode
            :rtype: bool
            """
            res = set()
            while head and head.next:
                if head not in res:
                    res.add(head)
                else:
                    return True
                head = head.next
            return False
    # leetcode submit region end(Prohibit modification and deletion)

    方法二:双指针法

    # leetcode submit region begin(Prohibit modification and deletion)
    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution(object):
        def hasCycle(self, head):
            """
            :type head: ListNode
            :rtype: bool
            """
            if not head or not head.next:
                return False
            slow = head
            fast = head.next
            while slow != fast:
                if not fast or not fast.next:
                    return False
                slow = slow.next
                fast = fast.next.next
            return True
    # leetcode submit region end(Prohibit modification and deletion)
    # leetcode submit region begin(Prohibit modification and deletion)
    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution(object):
        def hasCycle(self, head):
            """
            :type head: ListNode
            :rtype: bool
            """
            if not head or not head.next:
                return False
            slow = head
            fast = head.next
            while slow != fast:
                if not fast or not fast.next:
                    return False
                slow = slow.next
                fast = fast.next.next
            return True
    # leetcode submit region end(Prohibit modification and deletion)
    时刻记着自己要成为什么样的人!
  • 相关阅读:
    monkey测试===Monkey测试结果分析(系列三)转
    monkey测试===Monkey测试策略(系列二)转
    Java数据结构——二叉树
    Java排序算法——快速排序
    Java排序算法——归并排序
    Java递归算法——汉诺塔问题
    Java递归算法——二分查找
    Java递归算法——变位字
    Java递归算法——阶乘
    Java递归算法——三角数字
  • 原文地址:https://www.cnblogs.com/demo-deng/p/14773733.html
Copyright © 2011-2022 走看看