给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

说明:不允许修改给定的链表。

示例 1:

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

方法一: 集合set进行环的判断
当想要插入节点到set中之前需确认set中没有当前节点,如果有则为环,没有即可插入

ListNode *detectCycle(ListNode *head) {if (head == NULL) return NULL;set<ListNode *> node_set;node_set.insert(head);head = head -> next;while(head) {if (node_set.find(head) == node_set.end()) {node_set.insert(head);} else {return head;}head = head -> next;}return NULL;
}

方法二:快慢指针

ListNode *detectCycle(ListNode *head) {ListNode *fast = head;ListNode *slow = head;ListNode *meet = NULL;while(fast && slow) {fast = fast -> next;slow = slow -> next;if (fast) {fast = fast -> next;if (fast == slow) { //找到相遇的节点meet = fast;break;}} else {return NULL;}}if (meet == NULL) {return NULL;}/*两个指针分别从相遇节点和头节点一起移动,当相等时则为环的起始节点*/while(!(meet == head)) { meet = meet -> next;head = head -> next;}return meet;
}

leetcode-142 环形链表II相关推荐

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

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

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

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

  3. LeetCode 142 环形链表 II

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

  4. LeetCode 142. 环形链表 II

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

  5. LeetCode 142. 环形链表 II(链表环的检测)

    文章目录 1. 题目链接 2. 解题 1. 题目链接 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链 ...

  6. Leetcode 142. 环形链表 II (每日一题 20210902)

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

  7. LeetCode 142——环形链表 II

    1. 题目 2. 解答 2.1 方法 1 定义快慢两个指针,慢指针每次前进一步,快指针每次前进两步,若链表有环,则快慢指针一定会相遇. 当快慢指针相遇时,我们让慢指针指向头节点,快指针不变,然后每次快 ...

  8. leetcode 142. 环形链表 II(set/快慢指针)

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

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

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

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

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

最新文章

  1. 至Webserver构造svgz的文件需要http头,让你的浏览器中打开svgz档
  2. 数据库连接池技术--BoneCP
  3. VTK:重叠AMR用法实战
  4. OGG重复记录导致复制进程挂起
  5. 高并发大流量专题---10、MySQL数据库层的优化
  6. python flask项目过程_Python 开发过程遇到的问题
  7. 【原创】软件测试工程师基础技能+
  8. Paddle 基于预训练模型 ERNIE-Gram 实现语义匹配
  9. 别再无脑wwm了!在下游任务中不一定有效!
  10. 蓝桥杯第六届省赛JAVA真题----循环节长度
  11. 面试这些公司是在浪费时间
  12. 谈360下拉词360下拉框的优势及360搜索推广方法有哪些?
  13. 深圳40K都招不到嵌入式开发人员?
  14. skiller v3 beta2 发布
  15. ESP8266-Arduino编程实例-LM75温度传感器驱动
  16. Windows安装git图文教程
  17. b、blockquote、base、bdo、big、标签
  18. 5.用数组计算复利。有$1000,年利率6.5%,假设每月计息一次,计算10年的复利。输出要包括每年的利息、结余以及到改年为止的平均利息。
  19. linux 编辑模式使用sed,sed命令的用法和vim编辑器的使用
  20. 宇视科技2015应届生招聘笔试题

热门文章

  1. SCALA当的trait
  2. sql server 2008学习10 存储过程
  3. 【转】C/C++中的日期和时间
  4. datagrid DataFormatString
  5. 《OpenCV3编程入门》学习笔记9 直方图与匹配(三)直方图对比
  6. c语言解析sql语句_sql语句面试50题(Mysql版附解析)
  7. html5 graphics with svg css3,HTML5 GRAPHICS WITH SVG AND CSS3
  8. 南京大学计算机考研机试,2018南大CS考研机试答案
  9. 【PCL】的五大依赖库及作用
  10. Ubuntu18.04:错误整理