目录
1.判断一个表是否是环形链表!
代码如下
bool hasCycle(struct ListNode *head) {
struct ListNode* fast = head;
struct ListNode* slow = head;
while(fast && fast->next)
{
fast = fast->next->next;
slow = slow->next;
if(fast == slow)
{
return true;
}
}
return false;
}
解析如下
2.快指针的步数和慢指针的步数有什么影响(无图解析)
其实上面第一题 一个走两步一个走一步的方法是有一个公式的。
3.怎么找到环形链表的入环点
代码如下
struct ListNode *detectCycle(struct ListNode *head) {
struct ListNode* fast = head,*slow = head;
while(fast && fast->next)
{
fast = fast->next->next;
slow = slow->next;
if(fast == slow)
{
struct ListNode* cur = slow;
while(cur != head)
{
cur = cur->next;
head = head->next;
}
return head;
}
}
return NULL;
}
解析如下
首先做这题前,我们需要画一个图