leetcode-142 环形链表II
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 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相关推荐
- LeetCode 142. 环形链表 II(Linked List Cycle II)
142. 环形链表 II 142. Linked List Cycle II 题目描述 给定一个链表,返回链表开始入环的第一个节点.如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整 ...
- LeetCode 142. 环形链表 II - Python 快慢指针法+详解
题目 142. 环形链表 II 难度中等761 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的 ...
- LeetCode 142 环形链表 II
题目描述 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null.为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开 始). 如果 po ...
- LeetCode 142. 环形链表 II
LeetCode 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如 ...
- LeetCode 142. 环形链表 II(链表环的检测)
文章目录 1. 题目链接 2. 解题 1. 题目链接 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链 ...
- Leetcode 142. 环形链表 II (每日一题 20210902)
给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null.为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1 ...
- LeetCode 142——环形链表 II
1. 题目 2. 解答 2.1 方法 1 定义快慢两个指针,慢指针每次前进一步,快指针每次前进两步,若链表有环,则快慢指针一定会相遇. 当快慢指针相遇时,我们让慢指针指向头节点,快指针不变,然后每次快 ...
- leetcode 142. 环形链表 II(set/快慢指针)
给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 - ...
- 如何判断链表中是否存在环?Floyd判圈算法 leetcode刷题笔记 142. 环形链表 II
这道题使用了floyd判圈算法,所以先讲解floyd算法的原理和实现,最后在附加上第142题的代码. floyd算法: 一.用途: 可以在有限状态机.迭代函数或者链表上判断是否存在环,求出该环的起点与 ...
- 【LeetCode】【HOT】142. 环形链表 II(快慢指针)
[LeetCode][HOT]142. 环形链表 II 文章目录 [LeetCode][HOT]142. 环形链表 II package hot;class ListNode{int val;List ...
最新文章
- 至Webserver构造svgz的文件需要http头,让你的浏览器中打开svgz档
- 数据库连接池技术--BoneCP
- VTK:重叠AMR用法实战
- OGG重复记录导致复制进程挂起
- 高并发大流量专题---10、MySQL数据库层的优化
- python flask项目过程_Python 开发过程遇到的问题
- 【原创】软件测试工程师基础技能+
- Paddle 基于预训练模型 ERNIE-Gram 实现语义匹配
- 别再无脑wwm了!在下游任务中不一定有效!
- 蓝桥杯第六届省赛JAVA真题----循环节长度
- 面试这些公司是在浪费时间
- 谈360下拉词360下拉框的优势及360搜索推广方法有哪些?
- 深圳40K都招不到嵌入式开发人员?
- skiller v3 beta2 发布
- ESP8266-Arduino编程实例-LM75温度传感器驱动
- Windows安装git图文教程
- b、blockquote、base、bdo、big、标签
- 5.用数组计算复利。有$1000,年利率6.5%,假设每月计息一次,计算10年的复利。输出要包括每年的利息、结余以及到改年为止的平均利息。
- linux 编辑模式使用sed,sed命令的用法和vim编辑器的使用
- 宇视科技2015应届生招聘笔试题
热门文章
- SCALA当的trait
- sql server 2008学习10 存储过程
- 【转】C/C++中的日期和时间
- datagrid DataFormatString
- 《OpenCV3编程入门》学习笔记9 直方图与匹配(三)直方图对比
- c语言解析sql语句_sql语句面试50题(Mysql版附解析)
- html5 graphics with svg css3,HTML5 GRAPHICS WITH SVG AND CSS3
- 南京大学计算机考研机试,2018南大CS考研机试答案
- 【PCL】的五大依赖库及作用
- Ubuntu18.04:错误整理