Leetcode 141. 环形链表

题目描述:
给你一个链表的头节点 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
解释:链表中没有环。

思路:
解法1:双指针(快慢指针)
1、一快一慢两个指针,慢指针一次走1,快指针一次走2;
2、以相对速度考虑,如果有环,则一定会相遇;
3、注意循环条件,判断条件的设计。

python:

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

class Solution:
    def hasCycle(self, head: Optional[ListNode]) -> bool:
        # 定义快慢指针,都从起点head开始
        slow=fast=head
        # fast,fast.next都不为空时,走进循环,fast.next不为空,是为了fast.next.next可以被定义
        while fast and fast.next:
            # 慢指针,一次走1
            slow=slow.next
            # 快指针,一次走2
            fast=fast.next.next
            # 快指针和慢指针相遇的话,说明存在环
            if slow is fast:
                return True
        return False

解法2:哈希表+单指针
以set数据结构作为散列表,存储访问过的节点;
循环遍历链表,记录访问过的节点;
在循环中判断当前节点是否已记录在散列表中,如果有,则为环状链表。

python:

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

class Solution:
    def hasCycle(self, head: Optional[ListNode]) -> bool:

        # 创建哈希表来记录遍历经历的节点
        visited=set()
        # 指针指向head
        temp=head

        while temp:
            # 判断是否访问过该节点
            if temp in visited:
                return True
            # 记录访问过的节点
            visited.add(temp)
            # 移动节点
            temp=temp.next

        return None

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/454490.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据科学赛】光伏发电出力预测 #¥150,000

CompHub[1] 最新的比赛会第一时间在群里通知,欢迎加群交流比赛经验!(公众号回复“加群”即可) 根据比赛主页[2](文末阅读原文),使用AI辅助生成 光伏发电出力预测 比赛题目 本次比赛的题目是关于光伏发电出力预测。参…

FreeRTOS操作系统学习——中断管理

中断管理介绍 嵌入式实时系统需要对整个系统环境产生的事件作出反应。这些事件对处理时间和响应时间都有不同的要求。事件通常采用中断方式检测,中断服务例程(ISR)中的处理量应当越短越好。ISR是在内核中被调用的, ISR执行过程中,用户的任务…

C语言分析基础排序算法——计数排序

目录 计数排序 计数排序基本思路 计数排序改进思路 计数排序 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。具体思路为: 统计相同元素出现次数根据统计的结果将序列回收到原来的序列中 计数排序基本思路 基本思路分析: //以…

vue搭建脚手架遇到的一个bug

看起来运行vue init命令时出现了问题。似乎vue/cli-init插件没有被全局安装。你可以尝试使用npm(Node Package Manager)全局安装它。 按照以下命令: npm install -g vue/cli-init npm install -g vue-cli

力扣由浅至深 每日一题.05 合并两个有序列表

神明渡我,我将所有苦难都放过 —— 24.3.13 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,…

【系统架构师】-第19章-大数据架构设计理论与实践

四个特点: 大规模(Volume)、高速度(Velocity)和多样化(Variety),价值(Value)。 五个问题: 异构性(Heterogeneity)、规模…

提高螺栓连接强度——SunTorque智能扭矩系统

螺栓连接是工程中常见的一种连接方式,其强度对于设备的稳定性和安全性具有至关重要的影响。然而,由于各种因素的影响,螺栓连接在使用过程中往往会出现松动、断裂等问题,导致设备故障和安全隐患。因此,提高螺栓连接的强…

leetcode 热题 100_两数相加

题解一: 迭代:首先判断整数0,然后分别遍历两段链表,将对应位数的值相加并存入新链表,再遍历新链表,将节点值val>10的减10,并且其下一节点值val1。需要注意最后一位节点进位是将下一位节点值设…

电脑丢失msvcr120.dll文件怎么办-丢失msvcr120.dll文件的五种解决方法

今天有看到小伙伴们在问msvcr120.dll文件是什么,所以今天的这篇文章将给大家科普msvcr120.dll文件是什么,msvcr120.dll文件在电脑系统中的重要性,如果你的电脑中出现了关于msvcr120.dll文件丢失的问题,也可以参考这篇文章&#xf…

记录 Dubbo+Zookeeper 学习Demo

DubboZookeeper ZookeeperZookeeper 下载可能出现的问题 辅助程序下载dubbo-admin项目打包工程打包常见问题 SpringBoot集成Dubbo项目依赖定义服务接口服务端实现服务端配置依赖代码实现 消费端实现服务端配置依赖代码实现 启动 结合Dubbo官网学习如何完成SpringBootDubboZooke…

springBoot整合Redis(三、整合Spring Cache)

缓存的框架太多了,各有各的优势,比如Redis、Memcached、Guava、Caffeine等等。 如果我们的程序想要使用缓存,就要与这些框架耦合。聪明的架构师已经在利用接口来降低耦合了,利用面向对象的抽象和多态的特性,做到业务代…

Cesium ion 简介

Cesium ion SaaS 是一个强大、可扩展且安全的 3D 地理空间数据平台。可以上传您的数据,Cesium ion 会将其优化为 3D Tiles,并将其托管在云端,并将其流式传输到任何设备。 Cesium ion 包括访问精选的全球 3D 内容,包括 Cesium Wor…

jeecg 项目 springcloud 项目有一个模块 没加载进来 只需要 把这个模块放到 可以加载到模块的位置 刷新依赖

springcloud 项目有一个模块 没加载进来 只需要 把这个模块放到 可以加载到模块的位置 刷新依赖

04-自媒体文章-自动审核

自媒体文章-自动审核 1)自媒体文章自动审核流程 1 自媒体端发布文章后,开始审核文章 2 审核的主要是审核文章的内容(文本内容和图片) 3 借助第三方提供的接口审核文本 4 借助第三方提供的接口审核图片,由于图片存储到minIO中&…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的零售柜商品检测软件(Python+PySide6界面+训练代码)

摘要:开发高效的零售柜商品识别系统对于智能零售领域的进步至关重要。本文深入介绍了如何运用深度学习技术开发此类系统,并分享了全套实现代码。系统采用了领先的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5进行了性能比较,呈现了诸如…

算法学习系列(四十):贡献法

目录 引言概念一、孤独的照片二、牛的基因学三、字串分值 引言 关于这个贡献法考的不是很多,主要题型是出现在需要枚举每一个组合这类题,出现的次数较多。没有固定的模板,就是一种思想,跟贪心一样,每个题都是不一样的…

基于opencv的手势识别

当然可以,下面是一个使用OpenCV实现简单手势识别,并在摄像头捕捉的视频中描绘出手部轮廓为线条的示例。该代码会读取摄像头流,然后检测出手部,并用线条描绘出手的轮廓。 首先,你需要安装OpenCV库。如果你还没有安装&am…

C# 第三方曲线库及其特点

在 C# 中,有几个第三方库可以用于绘制曲线图,每个库都有自己的特点和优势。以下是一些常见的 C# 第三方曲线库及其特点,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.LiveC…

普通人也能年入百万的超级秘籍!2024超级机会,低薪人的第二事业

一、选对行业与把握时机尤为关键。 入场时机的选择,往往决定了你的起跑线。那些在行业赛道上升期便早早布局的人,无疑占据了极大的优势。想象一下,你置身于一个市场需求持续增长、发展空间巨大的行业,成功的机会自然大增。比如现…

Parade Series - WebRTC ( < 300 ms Low Latency )

Parade Series - FFMPEG (Stable X64) C:\Conda\parading-cam>ffmpeg -f dshow -i video"Surface Camera Front" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -an -rtsp_transport tcp -f rtsp://127.0.0.1:8554/cam0801