当前位置:网站首页>[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;
}
};
边栏推荐
- Stm32cubemx (8): RTC and RTC wake-up interrupt
- Bucket sort
- 【Leetcode】1352. Product of the last K numbers
- Development error notes
- Research and forecast report on China's solution polymerized styrene butadiene rubber (SSBR) industry (2022 Edition)
- 2022/7/1 learning summary
- [轉]: OSGI規範 深入淺出
- [trans]: spécification osgi
- Panel panel of UI
- 嵌入式数据库开发编程(零)
猜你喜欢
支持多模多态 GBase 8c数据库持续创新重磅升级
BUUCTF MISC
Grail layout and double wing layout
Magnifying glass effect
Heap sort summary
[turn to] MySQL operation practice (III): table connection
Learning notes of "hands on learning in depth"
3dsmax snaps to frozen objects
[paper notes] multi goal reinforcement learning: challenging robotics environments and request for research
2022年上半年国家教师资格证考试
随机推荐
Listview pull-down loading function
Leetcode word search (backtracking method)
win下一键生成当日的时间戳文件
Unity intelligent NPC production -- pre judgment walking (method 1)
Unity find the coordinates of a point on the circle
Sixth note
TF-A中的工具介绍
Simple HelloWorld color change
C iterator
Kali 2018 full image download
Es module and commonjs learning notes -- ESM and CJS used in nodejs
Use the command character to close the keyboard command of the notebook
cocos2dx_ Lua particle system
UE fantasy engine, project structure
Embedded database development programming (zero)
Lua GBK and UTF8 turn to each other
Unity synergy
Generate filled text and pictures
cocos2dx_ Lua card flip
[turn]: Apache Felix framework configuration properties