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

1.开辟字典,有额外空间

class Solution(object):
    def hasCycle(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        dict1={}
        if not head or not head.next:
            return False
        count=-1
        while head and head not in dict1:
            count+=1
            dict1[head]=count
            if head.next:
                head = head.next
            else:
                return False
        return True

2.快慢指针,没有额外空间

class Solution(object):
    def hasCycle(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        if not head or not head.next:
            return False
        quick=slow=head
        # 下边这个循环不用担心死循环,因为只要出现环,就会被if语句捕捉,不会永远转下去的
        # 若无环,当快指针遍历到最后时,就会结束循环
        while quick.next and quick.next.next:
            quick=quick.next.next
            slow=slow.next
            if quick==slow:
                return True
        return False
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,161评论 1 32
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,875评论 0 10
  • 也许每个人出生的时候都会以为这世界是为他一个人而存在的,当他发现自己错了的时候,他便开始长大。
    汐茗阅读 176评论 0 1
  • 文/程程 图/网络 那最早的是18世纪把这种方法用在坏血病治疗上,通过对比做大量的实验,人们知道橘子加上柠檬水...
    程程的情怀阅读 336评论 1 3
  • 毕加索的画我从来欣赏不了,也就没了兴趣,而地图这种类型的图画却是我的心头肉。小时候,爸爸就教我辨别方位,上北下南,...
    虎斑爱写字阅读 859评论 1 2