当前位置:网站首页>第一讲:链表中环的入口结点
第一讲:链表中环的入口结点
2022-07-07 22:21:00 【奋斗吧!骚年!】
题目:链表中环的入口结点
给定一个链表,若其中包含环,则输出环的入口节点。
若其中不包含环,则输出null。
数据范围
节点 val 值取值范围 [1,1000]。
链表长度 [0,500]。
样例
给定如上所示的链表:
[1, 2, 3, 4, 5, 6]
2
注意,这里的2表示编号是2的节点,节点编号从0开始。所以编号是2的节点就是val等于3的节点。
则输出环的入口节点3.
题目解析:
方法一:哈希表
我们可以使用unordered_set,来保存节点指针,如果发现有相同的指针(set的大小不变),则表示是入口节点
方法二:快慢指针
原理:快指针每次走两步,慢指针每次走一步,如果有环则一定会相遇
如图,假设慢指针从a走到b最后与快指针相遇于c,如果慢指针返回到b点,则快指针会返回到d点(因为会多走y步)
那么我们可以发现当慢指针走到b点,那么快指针就会走到d点(因为回退得出的),那么x+y就会是圈的整数倍(其实可能快指针已经在圈里走过很多圈了,但是这不影响,相当于取余操作)
最后我们将慢指针移到起点,两个指针走同样的步数,则就会在入口相遇(因为快指针已经走了y步,再走x步肯定会在b点,而慢指针走x步也会在b点)
执行次数:x+y+2x+2y+2x=5x+3y(因为x+y小于总长度,所以时间复杂度0(n))
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */
class Solution {
public:
ListNode *entryNodeOfLoop(ListNode *head) {
if(!head)return NULL;
set<ListNode *> s;
while(head->next)
{
int size=s.size();
s.insert(head);
if(size==s.size())return head;
head=head->next;
}
return NULL;
}
};
边栏推荐
- Automated testing: robot framework is a practical skill that 90% of people want to know
- Detailed explanation of interview questions: the history of blood and tears in implementing distributed locks with redis
- 【编程题】【Scratch二级】2019.03 垃圾分类
- 在网页中打开展示pdf文件
- 数据库查询——第几高的数据?
- Set up personal network disk with nextcloud
- 哪个券商公司开户佣金低又安全,又靠谱
- RPA云电脑,让RPA开箱即用算力无限?
- Using Google test in QT
- 【史上最详细】信贷中逾期天数统计说明
猜你喜欢

Is Zhou Hongyi, 52, still young?

Automated testing: robot framework is a practical skill that 90% of people want to know

The function is really powerful!

Using Google test in QT

【测试面试题】页面很卡的原因分析及解决方案
![Cause analysis and solution of too laggy page of [test interview questions]](/img/8d/3ca92ce5f9cdc85d52dbcd826e477d.jpg)
Cause analysis and solution of too laggy page of [test interview questions]

Development of a horse tourism website (realization of login, registration and exit function)

面试题详解:用Redis实现分布式锁的血泪史

Two small problems in creating user registration interface

ROS从入门到精通(九) 可视化仿真初体验之TurtleBot3
随机推荐
Preliminary test of optical flow sensor: gl9306
深潜Kotlin协程(二十二):Flow的处理
52岁的周鸿祎,还年轻吗?
Install sqlserver2019
他们齐聚 2022 ECUG Con,只为「中国技术力量」
[研发人员必备]paddle 如何制作自己的数据集,并显示。
测试流程不完善,又遇到不积极的开发怎么办?
Pypharm uses, and the third-party library has errors due to version problems
Emotional post station 010: things that contemporary college students should understand
Linkedblockingqueue source code analysis - add and delete
Basic learning of SQL Server -- creating databases and tables with code
Play sonar
2022-07-07:原本数组中都是大于0、小于等于k的数字,是一个单调不减的数组, 其中可能有相等的数字,总体趋势是递增的。 但是其中有些位置的数被替换成了0,我们需要求出所有的把0替换的方案数量:
Robomaster visual tutorial (11) summary
Smart regulation enters the market, where will meituan and other Internet service platforms go
After going to ByteDance, I learned that there are so many test engineers with an annual salary of 40W?
Common selectors are
Scrapy framework
玩轉Sonar
手写一个模拟的ReentrantLock