首页 > 编程语言 >LeetCode Top100: 环形链表(python)

LeetCode Top100: 环形链表(python)

时间:2023-04-20 11:48:00浏览次数:45  
标签:head slow python fast next 链表 Top100 指针

 

给你一个链表的头节点 head ,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。

如果链表中存在环 ,则返回 true 。 否则,返回 false 。

 

示例 1:

输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:

输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:

输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

 

提示:

  • 链表中节点的数目范围是 [0, 104]
  • -105 <= Node.val <= 105
  • pos 为 -1 或者链表中的一个 有效索引 。

 

实现:

可以使用快慢指针来解决这个问题。假设存在环,那么快指针将会在某个时刻追上慢指针。具体来说,定义两个指针 slowfast,初始值都指向链表的头节点。每次移动时,慢指针 slow 移动一步,快指针 fast 移动两步。如果链表中存在环,那么快指针 fast 最终将会追上慢指针 slow;如果不存在环,那么快指针 fast 最终将会到达链表的尾部,此时可以返回 False

下面是实现该算法的 Python 代码:

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def hasCycle(self, head: ListNode) -> bool:
        if not head:
            return False
        
        slow = head
        fast = head.next
        
        while fast and fast.next:
            if slow == fast:
                return True
            
            slow = slow.next
            fast = fast.next.next
        
        return False

  

 

标签:head,slow,python,fast,next,链表,Top100,指针
From: https://www.cnblogs.com/huadongw/p/17336215.html

相关文章

  • Python 图像处理实用指南:11~12
    原文:Hands-OnImageProcessingwithPython协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN计算机视觉译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。当别人说你没有底线的时候,你最好真的没有;当别人说你做过某些事的时候,你也最好真的做过。十一、深入学习图像处理——......
  • 理解 Python 的 Dataclasses第二篇(转)
    原文:https://zhuanlan.zhihu.com/p/59658598作者:没有50CM手臂网站:知乎这是Python最新的Dataclasses系列的第二部分内容。在第一部分里,我介绍了dataclasses的一般用法。这篇博客主要介绍另一个特征:dataclasses.field。我们已经知道Dataclasses会生成他们自身的__init__方法。......
  • 理解 Python 的 Dataclasses第一篇(转)
    原文:https://zhuanlan.zhihu.com/p/59657729作者:没有50CM手臂网站:知乎引言Dataclasses是一些适合于存储数据对象(dataobject)的Python类。你可能会问,什么是数据对象?下面是一个并不详尽的用于定义数据对象的特征列表:他们存储并表示特定的数据类型。例如:一个数字。对于那些熟悉......
  • python+playwright 学习-54 结合 gremlins.js 实现web 网页的mokey测试
    前言在Android应用测试里面有个mokey测试可以对app做稳定性的测试,在app里面随机乱点发送一些事件,看app会不会异常。这种做法,也称为Monkey测试或Fuzz测试,在移动应用程序开发中非常常见。Gremlins.js模拟随机用户操作:gremlins单击窗口中的任意位置,在表格中输入随机数......
  • PYTHON TXT 去空行
    withopen('file.txt','r')asf:lines=f.readlines()withopen('file.txt','w')asf:forlineinlines:ifline.strip():f.write(line)首先,我们使用`open()`函数打开文件,并使用`readlines()`方法读取文件中的所有......
  • python pyautogui检测鼠标点击事件
    目录pythonpyautogui检测鼠标点击事件pythonpyautogui检测鼠标点击事件在Python中,可以使用pyautogui模块来检测鼠标的点击事件,并判断左键或右键。下面是一个示例代码,可以检测鼠标的点击事件,并根据左键或右键输出不同的信息:pythonCopyimportpyautoguiwhileTrue:tr......
  • Python数据挖掘之关联规则学习
    一、关联算法应用介绍关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找出各项之间的关联关系,而这种关系并没有在数据中直接表示出来。常见于与购物篮分析。常用关联算法表如下,简单理解的话,就是测算某几项东西一起出现的概率。比如:如果测算得出,大量订单中出......
  • python3 猜数字小游戏
    Guess_the_Number.pyimportrandom......
  • python接口自动化
    #coding=utf-8'''python中常用的做接口自动化测试的库有哪些?requests、urllib、urllib3、httplibrequests是开源免费的,应用最多的一个库'''#importrequests#创建接口请求三种方法#r=requests.post(url=url,data=data,json=json)#r=requests.request('psot',url=url......
  • python接口自动化2关联接口
    #coding=utf-8"""===================================深圳多测师信息技术有限公司作者:多测师-小程日期:2023年03月30日==================================="""#关联接口:上一个接口的返回参数作为下一个接口的入参#importrequests#importre#classProvince():......