#142. 环形链表

题目

给定一个链表,返回链表入环的第一个节点。如果无环,返回Null。

解答

HashSet解法

设置cur指针,一直把cur指针更新为cur.next。

如果哪一次新看的cur在HashSet visited里面,那么证明该节点是链表入环的第一个节点。

每一次check完都要记得把该节点加入visited里。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = Noneclass Solution:def detectCycle(self, head: Optional[ListNode]) -> Optional[ListNode]:visited = set()cur = headwhile(cur):if cur in visited:return curvisited.add(cur)cur = cur.nextreturn None

快慢指针解法

  1. 快指针走2步,慢指针走1步,找相遇点。如果已经走到尽头仍然没有相遇点,则代表无环。
  2. 快指针从头出发,慢指针从相遇点出发,相遇位置为链表内循环的起点。
    1. 以下公式的最后一行解释了为什么两个指针分别从头,从相遇点开始走,可以最终碰面于循环节点

      #142. 环形链表相关推荐

      1. LeetCode-链表-142. 环形链表 II

        描述 142. 环形链表 II 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 ...

      2. 142. 环形链表 II golang

        142. 环形链表 II 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始 ...

      3. LeetCode 142 环形链表 II

        题目描述 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null.为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开 始). 如果 po ...

      4. 【LeetCode】【HOT】142. 环形链表 II(快慢指针)

        [LeetCode][HOT]142. 环形链表 II 文章目录 [LeetCode][HOT]142. 环形链表 II package hot;class ListNode{int val;List ...

      5. LeetCode 142. 环形链表 II(Linked List Cycle II)

        142. 环形链表 II 142. Linked List Cycle II 题目描述 给定一个链表,返回链表开始入环的第一个节点.如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整 ...

      6. 142. 环形链表 ||

        142. 环形链表 || /*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* Li ...

      7. 如何判断链表中是否存在环?Floyd判圈算法 leetcode刷题笔记 142. 环形链表 II

        这道题使用了floyd判圈算法,所以先讲解floyd算法的原理和实现,最后在附加上第142题的代码. floyd算法: 一.用途: 可以在有限状态机.迭代函数或者链表上判断是否存在环,求出该环的起点与 ...

      8. LeetCode 142. 环形链表 II - Python 快慢指针法+详解

        题目 142. 环形链表 II 难度中等761 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的 ...

      9. 【Leetcode】拿捏链表(四)——160. 相交链表、141. 环形链表、142. 环形链表 II

        作者:一个喜欢猫咪的的程序员 专栏:<Leetcode> 喜欢的话:世间因为少年的挺身而出,而更加瑰丽.                                  --<人民 ...

      最新文章

      1. linux下安装boost
      2. AHOI(十二省联考)2019 退役记
      3. 用canvas绘制一个圆形,实现绕着一个中心运动
      4. jdk11 jdk12_JDK 12附带紧凑数字格式
      5. css模糊_如何使用CSS模糊图像?
      6. 结对项目-小学生四则运算系统网页版项目报告
      7. 为你的网站加上SSL,可以使用HTTPS进行访问
      8. 一步一步学习SignalR进行实时通信_5_Hub
      9. 配置的android版本,Android SDK配置(V3.0.0及以上版本)
      10. my log4crc
      11. UE4 植被工具的使用
      12. 车牌号识别 python + opencv
      13. 谷歌董事长施密特:乔布斯是25年来最成功CEO
      14. 三菱fx3uplc恢复出厂设置_清除三菱FX系列PLC密码的三种方法
      15. 壁纸最佳分辨率尺寸表
      16. 深度残差网络RESNET
      17. word中目录右边页码对不齐解决方法
      18. 东汉末年的事态格局的变迁原因即三国各个厉害角色的性格中的底层原因分析
      19. matlab拉氏变换求解转移矩阵eAt
      20. 未来计算机语言的发展趋势,编程语言的发展趋势及未来方向 I

      热门文章

      1. 网络信息安全专业毕业找工作岗位有哪些?快来看
      2. 贴自己喜欢的几首英文歌曲
      3. android 微信摇一摇 简单实现
      4. 扎克伯格引发讨论:创始人是否应该担任CEO?
      5. android 华为底部虚拟键盘隐藏,Hbuilder 如何隐藏华为、oppo、魅族等手机的底部虚拟按键。...
      6. windows无法打开添加打印机_win7系统提示无法打开添加打印机怎么办 无法打开添加打印机解决方法【介绍】...
      7. 自定义选择框CheckBox样式
      8. JavaScript中科学计数法转化为数值字符串形式
      9. 微信小程序商城怎么推广?看这里!
      10. android+m3+max,魅族巨屏新机魅蓝Max跑分曝光:联发科P10处理器+3GB运存