首页 > 其他分享 >141. 环形链表

141. 环形链表

时间:2023-10-30 21:00:11浏览次数:30  
标签:head 141 环形 next 链表 哈希 节点 指针

目录

题目

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

法一、快慢指针

  • 快慢指针,如果有环快指针必定会追上慢指针
class Solution:
    def hasCycle(self, head: Optional[ListNode]) -> bool:
        f=s=head#定义快慢指针,指向链表头节点
        while f and f.next:#当快指针和快指针的下一个都不为空时执行
            s=s.next#慢指针走一步
            f=f.next.next#快指针走两步
            if s==f:#如果快指针节点的值等于慢指针节点的值
                return True#说明有环
        return False
  • 注意循环的条件,f快指针比s慢指针先到尾,所以不用判断s;只有保证f.next不为0才可以在循环中实现f=f.next.next
  • if s==f不是(if s.val==f.val)比较的是节点本身,而不是节点的值。

法二、哈希表

class Solution:
    def hasCycle(self, head: ListNode) -> bool:
        # 1. python map
        m = {}   #创建一个空的哈希表 m,用于存储链表节点
        while head: 
            if m.get(head):  #检查哈希表中是否存在键为 head 的项
                return True  #如果存在,表示链表中存在环,返回 True。
            m[head] = 1  #如果不存在,将 head 作为键,值为 1 存入哈希表 m 中,表示已经访问过该节点。
            head = head.next   #更新为下一个节点
        return False  

标签:head,141,环形,next,链表,哈希,节点,指针
From: https://www.cnblogs.com/lushuang55/p/17798791.html

相关文章

  • 234.回文链表
    目录题目法一、复制+反转链表法二、堆栈法三、快慢指针和链表反转题目给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false示例1:输入:head=[1,2,2,1]输出:true示例2:输入:head=[1,2]输出:false法一、复制+反转链表把原......
  • 05数据结构(栈、队列、数组、链表)
    数据结构一、什么是数据结构计算机底层存储、组织数据的方式。是指数据相互之间是以什么方式排列在一起的。数据结构是为了更加方便的管理和使用数据,需要结合具体的业务场景来进行选择。一般情况下,精心选择的数据结构可以带来更高的运行或者存储效率。如何学习数据结构:每......
  • 利用CSS 实现环形百分比进度展示
    先看效果图: UI设计了这样的效果,已读人数占总人数的百分比,环形展示。这里可以用echarts图表,也可以用css实现,因为我是在小程序环境下,考虑到包大小体积,采用了css实现。核心就是一行代码:background-image:conic-gradient(#e9e9e930deg,transparent30deg);这个只是一个静......
  • 21. 合并两个有序链表
    目录题目代码题目将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]代码class......
  • 面试必刷TOP101:16、删除有序链表中重复的元素-II
    一、题目二、题解importjava.util.*;publicclassSolution{publicListNodedeleteDuplicates(ListNodehead){//空链表if(head==null)returnnull;ListNoderes=newListNode(0);//在链表前加一个表头......
  • 2023-2024 -1 20231415 《计算机基础与程序设计》第六周学习总结
    这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#JXJC这个作业的目标学习计算机科学概论第6章并完成云班课测试,学习《C语言程序设计》第4章并完成云班课测试作业正......
  • 2023-2024-1 20231418 《计算机基础与程序设计》第五周周总结
     作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业的要求2022-2023-1计算机基础与程序设计第五周作业这个作业的目标学习《计算机科学概论(第7版)》第6章、《C语言程序设计》第4章作业正文lhttps://www.cnblogs.com/20231418txm/p/177966......
  • 2023-2024-1 20231412《计算机基础与程序设计》第五周学习总结
    2023-2024-120231412《计算机基础与程序设计》第五周学习总结作业要求这个作业属于哪个课程(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP)这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03这个作业的目标自学计算机科学概论......
  • 2023-2024-1 20231419 《计算机基础与程序设计》第五周学习总结
    2023-2024-120231419《计算机基础与程序设计》第五周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK05这个作业的目标预习《计算机科学概......
  • 2023-2024-1 20231417 《计算机基础与程序设计》第五周学习总结
    2023-2024-120231417《计算机基础与程序设计》第五周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第五周作业这个作业的目标<关于机器语言与汇编语言,pep9的相关应用,循坏算法的了解与......