python 环形链表

Python链表中环的问题:3种方法判断是否有环,找到入环节点,... 链表相关文章: Python实现单向链表(上):小白写法的15种增删改查操作 Python实现单向链表(下):整合式实现增删改查操作 什么是环? 准备工作:创建结点(Node)类 class Node: def __init__(self, data, next=None): self.data = data # 数据,当前结点的元素 self.next = None # 指针,指向下一个结点 准备工作:如何创建一个有环的链表来测试 创建的是一个如下图所示的有环链 阅读详情

|环形链表

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

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

如果链表中存在环,则返回 true 。 否则,返回 false 。
在这里插入图片描述
输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。
在这里插入图片描述

输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。
在这里插入图片描述
输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

| 题解

思路及算法
本方法需要读者对「Floyd 判圈算法」(又称龟兔赛跑算法)有所了解。
假想「乌龟」和「兔子」在链表上移动,「兔子」跑得快,「乌龟」跑得慢。当「乌龟」和「兔子」从链表上的同一个节点开始移动时,如果该链表中没有环,那么「兔子」将一直处于「乌龟」的前方;如果该链表中有环,那么「兔子」会先于「乌龟」进入环,并且一直在环内移动。等到「乌龟」进入环时,由于「兔子」的速度快,它一定会在某个时刻与乌龟相遇,即套了「乌龟」若干圈。
我们可以根据上述思路来解决本题。具体地,我们定义两个指针,一快一满。慢指针每次只移动一步,而快指针每次移动两步。初始时,慢指针在位置 head,而快指针在位置 head.next。这样一来,如果在移动的过程中,快指针反过来追上慢指针,就说明该链表为环形链表。否则快指针将到达链表尾部,该链表不为环形链表。

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

class Solution:
    def hasCycle(self, head: ListNode) -> bool:
        # 如果链表为空或者只有一个节点 直接返回False
        if head is None or head.next is None:
            return False
        # 定义快慢指针
        fast = head
        slow = head

        # 先让快指针走一步
        fast = fast.next

        while fast:
            # fast指针追上了slow指针 证明有环
            if fast == slow:
                return True
            else:
                # 特殊情况处理,任何一个节点的next节点is None 都可以认为此链表无环
                if fast.next is None:
                    return False
                fast = fast.next.next
                slow = slow.next

        return False
Python实现环形链表 我们将单向链表的最后一个节点的指针指向链表的头部(第一个节点),那么就形成了一个环形链表。环形节点可以从任意节点开始遍历其他的节点。 这里主要实现了环形链表节点的遍历、添加、插入、删除,反转。 代码如下: class Player: """节点类""" def __init__(self): """初始化姓名,分数,指针""" self.na... 阅读详情

相关推荐

通过PXE的方式实现Ubuntu 24.04 自动安装

之前都是通过PXE来自动化安装Redhat系列的,例如:Rocky9、Rocky10、CentOS7、银河麒麟 Kylin-V10、Kylin-V11、OpenEuler 24.03等。现在安装Ubuntu系列的跟红帽的不太一样,所以在这里介绍下。

邢宇宇的博客 1493

LeetCode 141. 环形链表(C++) 快慢指针

给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 进阶: 你能用 O(1)(即,常量)内存解决此问题吗? 示例 1: 输入:head = [3,2,0,-4], p

伍粟的博客 390

PLSQL Developer新手必看:如何避免安装过程中的常见坑

本文为PL/SQL Developer新手提供了详尽的安装与配置避坑指南。从版本选择、注册码使用、汉化包安装到Oracle客户端连接配置,逐一解析常见问题并提供解决方案,帮助开发者快速搭建稳定的PL/SQL开发环境,顺利开启Oracle数据库编程工作。

g9h0i1的博客 651

Python数据结构----链表2.0(环形链表)

详细介绍Python中的环形链表,单向循环链表,双向循环链表还有局部循环链表,快来看

m0_73633088的博客 1759

【SAM2系列】windows单GPU复现时的bug解决记录

windows运行sam2,就感觉在开一艘破破烂烂的船,每走一步报一个错,bug源源不断的冒出来😭😭😭😭😭。

weixin_43571113的博客 1317

微软Media Creation Tool 创建工具 1.3 升级:支持全新下载安装Win11 22H2 Build 22621.525

微软 Media Creation Tool 创建工具 1.3 升级:支持全新下载安装 Win11 22H2 Build 22621.525 ISO 镜像,如果今天运行使用 Media Creation Tool,则会下载 Windows 11 2022 版本 Build 22621.525,它不会向操作系统添加任何新内容,但会修复安装问题,下面来看看详细的更新内容。

zym0218的博客 4231

Python 力扣142. 环形链表 II

这种处理方式我建议读者记住即可,但想要深究其中的数学原理也并不难,有时间的读者可以去labuladong的网站(下方有链接)查看“双指针技巧秒杀七道链表题目”,里面对于这其中的数学原理有进一步的介绍。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(如果 fast 最终和 slow 相遇,那肯定是 fast 超过了 slow 一圈,说明链表中含有环。,仅仅是为了标识链表的实际情况。

yj12443的博客 511

三菱FX5U通信之CCLINK操作步骤

11. 连接 CC‐Link 用的端子排,连接 Ver.1.10 对应 CC‐Link 专用电缆。备注:1、以上对应的寄存器都是一一对应的,主站的点数可以比从站多,但是都需要一一对应起来。3.直接安装孔,用于直接安装的螺钉孔(2‐φ4.5,安装螺钉为 M4 螺钉)2.点阵 LED(显示模块中设置的站号和测试模式的内容)5.次段扩展连接器(连接扩展模块的扩展电缆的连接器)4.动作状态(显示 LED 显示模块的动作状态)10 电源连接器,用于连接电源电缆的连接器。1.扩展电缆(扩展时连接用的电缆)

ZXL622722的博客 6931

环形链表(python实现)

题目描述: 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 输出:t...

weixin_44512019的博客 993

【Ranger】mac下Apache Ranger编译安装

a、编译过程中出现测试用例不通过和文件认证错误错误:带上参数-DskipTests=true -Drat.skip=true 重新编译;b、若编译过程中出现缺少jar包的情况,可能下载不了,需要手动自动添加;c、编译所需的其他工具如maven等安装配置略。采用这个会报错,因此我才用了下面一个命令。初始化设置Ranger Admin:执行。然后进入target目录。

九师兄 2104

基于Python实现学习进度跟踪系统

{{ task }}: {{ "%.1f"|format(hours) }}小时

寒寒豆豆软件公司的博客 195

python环形链表的使用

文章目录1 链表的建立2 链表的遍历3 环形链表的建立4 环形链表的遍历5 环形链表建立和遍历代码示例 1 链表的建立 # 首先定义一个链表 class linked_list_name: def __init__(self): # 初始化 self.item1 = '' # 第一个成员 self.item2 = '' # 第二个成员 ...

凯哥大数据——刘凯的博客 1116

WiFi基本概念(六)(L-STF,L-LTF)

L-STF它由10个OFDM symbol(1,0,1,0,1,0,1,0,1,0)构成,每个symbol是0.8us,GI是0.2us,总计10us。Symbol的长度是正常长度的1/4,因此称为Short training field,主要用于快速进行信号检测,信号同步,自动增益控制,接收天线选择(Diversity Selection)。 由于symbol长度是正常的1/4,子载波的宽度是正常的4倍,能进行初略的信道估计,其使用了-24, -20, -16, -12, -8, -4, 4, 8, 1

reekyli的专栏 6863

Python实现环形链表详解

本文实例为大家分享了Python实现环形链表的具体代码,供大家参考,具体内容如下我们将单向链表的最后一个节点的指针指向链表的头部(第一个节点),那么就形成了一个环形链表。环形节点可以从任意节点开始遍历其他的节点。这里主要实现了环形链表节点的遍历、添加、插入、删除,反转。代码如下: class Player: """节点类""" def __init__(self): """初始化姓名,分

Free雅轩的博客 833

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【leetcode】Python实现-141.环形链表

141.环形链表 描述 给定一个链表,判断链表中是否有环。 进阶: 你能否不使用额外空间解决此题? 我…遍历了以后超出时间限制,于是看大家总结的方法。一个就是设置两个指针slow和fast,一个步长为1,一个步长为2进行遍历。如果有环,则slow和fast总会在某一点相遇。如果没有环,则fast会先为空,或者fast.next为空。 # Definition for...

神不烦 5408

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python创建一个环形链表_Python3实现的判断环形链表算法示例

本文实例讲述了Python3实现的判断环形链表算法。分享给大家供大家参考,具体如下:给定一个链表,判断链表中是否有环。方案一:快慢指针遍历,若出现相等的情况,说明有环# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.n...

weixin_39762478的博客 169

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

python 环形链表_Python3实现的判断环形链表算法示例

本文实例讲述了Python3实现的判断环形链表算法。分享给大家供大家参考,具体如下:给定一个链表,判断链表中是否有环。方案一:快慢指针遍历,若出现相等的情况,说明有环# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.n...

weixin_39819138的博客 286

Python算法题集_环形链表

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

长孤秋落的札记 1180

leetcode_环形链表1/2----Python

环形链表 题目 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 ...

qq_42192672的博客 319

leetcode 142. 环形链表 II python

题目描述: 题解: 参考:​​​​​​【leetcode】Python实现-141.环形链表_神不烦-优快云博客_python 环形链表 利用快慢指针的性质: 快慢指针相遇的位置到环入口的距离=链表头到环入口的距离 1.一个快指针fast=head.next.next,每次移动两个节点。一个慢指针slow=head.next,每次移动一个节点。 2.在while循环中找到slow fast相遇位置,此时slow=fast 3.设置flag从head开始,slow和flag不断向后一.

ganggang的博客 288

Python算法题集_环形链表II

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

长孤秋落的札记 1053

使用python实现环形链表

使用python实现环形链表 LeetCode题目地址 具体代码: # 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): slow = fast = he

weixin_44430893的博客 396

python-leetcode-环形链表 II

【代码】python-leetcode-环形链表 II。

Lucy_wzw的博客 377

LeetCode 141 环形链表 python

题目描述 给定一个链表,判断链表中是否有环。 样例 如果有环 返回True 否则 返回False 想法一: 遍历链表,将遍历过的节点加入list,如果出现重复节点,则返回True,否则遍历结束,返回False,但是结果超时。 class Solution(object): def hasCycle(self, head): """ :type head:...

孤行 802

python3链表_Python3实现的判断环形链表算法示例

本文实例讲述了Python3实现的判断环形链表算法。分享给大家供大家参考,具体如下:给定一个链表,判断链表中是否有环。方案一:快慢指针遍历,若出现相等的情况,说明有环# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.n...

weixin_39884832的博客 71

LeetCode 141. 环形链表(python题解)

LeetCode 141. 环形链表(python题解)1 题目2 示例3 分析4 题解 1 题目 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 2 示例 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 输出:true 解释

WenDong1997的博客 532
上一篇: 什么是栈,栈存储结构详情
下一篇: python 用两个栈实现一个队列
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶知秋的BLOG

创作不易 请多多关注

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值