当前位置:网站首页>[speed pointer] 142 circular linked list II
[speed pointer] 142 circular linked list II
2022-07-05 05:16:00 【lee2813】
One 、 subject
Given a linked list , Return to the first node of the link where the list begins to enter . If the list has no links , Then return to null.
If there is a node in the linked list , It can be done by continuously tracking next The pointer reaches again , Then there is a ring in the linked list . To represent a ring in a given list , The evaluation system uses an integer pos To indicate where the end of the list is connected to the list ( Index from 0 Start ). If pos yes -1, There are no links in the list . Be careful :pos Not passed as an argument , Just to identify the actual situation of the linked list .
No modification allowed Linked list .
Example 1:
Input :head = [3,2,0,-4], pos = 1
Output : The return index is 1 The linked list node of
explain : There is a link in the list , Its tail is connected to the second node .
Example 2:
Input :head = [1,2], pos = 0
Output : The return index is 0 The linked list node of
explain : There is a link in the list , Its tail is connected to the first node .
Example 3:
Input :head = [1], pos = -1
Output : return null
explain : There are no links in the list .
Two 、 Answer key
For the link list to find the loop problem , There is a general solution —— Fast and slow pointer method :
Given that both pointers point to the starting point , One for fast pointer , Move two steps at a time ; One is a slow pointer , One step at a time . If the fast pointer can go to the end , Explain the Fifth Ring Road , Otherwise there is a loop .
After confirming that there is a loop , How to find the starting point of the loop ?
- First, when determining the loop , The end condition is that the speed pointer meets for the first time
- Then the fast pointer is reset to the starting point , Slow hands don't move , When moving the second time, the fast and slow pointer moves only one step each time , Until the second meeting , At this time, the point of meeting is the starting point of the loop .
3、 ... and 、 Code
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */
class Solution {
public:
ListNode *detectCycle(ListNode *head) {
ListNode* fast = head;
ListNode* slow = head;
do{
if(!fast || !fast->next) return nullptr;
fast = fast->next->next;
slow = slow->next;
}while(fast!=slow);
fast = head;
while(fast!=slow){
fast = fast->next;
slow = slow->next;
}
return fast;
}
};
边栏推荐
- Leetcode word search (backtracking method)
- UE 虚幻引擎,项目结构
- LeetCode之單詞搜索(回溯法求解)
- The next key of win generates the timestamp file of the current day
- 64 horses, 8 tracks, how many times does it take to find the fastest 4 horses at least
- Web APIs DOM节点
- Unity enables mobile phone vibration
- 对象的序列化
- UE4/UE5 虚幻引擎,材质篇(三),不同距离的材质优化
- Cocos create Jiugongge pictures
猜你喜欢
Data is stored in the form of table
2022/7/2 question summary
UE4/UE5 虚幻引擎,材质篇,纹理,Compression and Memory压缩和内存
Unity find the coordinates of a point on the circle
How to choose a panoramic camera that suits you?
服务熔断 Hystrix
小程序直播+电商,想做新零售电商就用它吧!
Quick sort summary
[转]MySQL操作实战(三):表联结
Grail layout and double wing layout
随机推荐
Animation
2022/7/2 question summary
China polyurethane rigid foam Market Research and investment forecast report (2022 Edition)
Insert sort
使用Room数据库报警告: Schema export directory is not provided to the annotation processor so we cannot expor
2022/7/2做题总结
Unity and database
PostgreSQL surpasses mysql, and the salary of "the best programming language in the world" is low
[转]MySQL操作实战(一):关键字 & 函数
3dsmax2018 common operations and some shortcut keys of editable polygons
Recherche de mots pour leetcode (solution rétrospective)
[转]:Apache Felix Framework配置属性
PMP考生,请查收7月PMP考试注意事项
Unity get component
Database under unity
小程序直播+電商,想做新零售電商就用它吧!
Unity parallax infinite scrolling background
Embedded database development programming (V) -- DQL
十年不用一次的JVM调用
cocos_ Lua loads the file generated by bmfont fnt