#include <iostream>
#include <vector>
using namespace std;
struct ListNode{
int val;
ListNode* next;
ListNode(int x): val(x), next(nullptr) {}
};
class Solution {
public:
ListNode* detectCycle(ListNode* head) {
ListNode* fast = head;
ListNode* slow = head;
// 1.判断链表是否有环
while(fast && fast->next) {
fast = fast->next->next;
slow = slow->next;
// 2.快慢指针相遇,则说明链表有环
if(fast == slow) {
ListNode* index1 = head;
ListNode* index2 = fast;
// 3.利用"快慢指针在环内相遇点处到环入口节点的距离 == 头节点到环入口节点的距离"原理,找到环的入口节点
while(index1 != index2) {
index1 = index1->next;
index2 = index2->next;
}
return index1;
}
}
return nullptr;
}
};
【LeetCode-142 | 找到环形链表的入口节点】
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 题目描述 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 说明:不允许修改给定的链...
- 链接:https://www.nowcoder.com/questionTerminal/6e630519bf86...
- Leetcode 141 与 Leetcode 142 题类似,Leetcode 141 为判断链表是否有环,而L...
- 题目描述 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我...