快慢指针-判断链表中是否有环

力扣: 141. 环形链表

这是面试高频题,典型的快慢指针题目——快指针每次走两步,慢指针每次走一步,快慢指针相遇的话,就说明链表中有环。

今天同事说,有次他面试的时候,面试官问他:如果快指针每次走三步,还能不能和慢指针相遇。

挺有意思的一个问题,然后同事给出了一个证明:

upload successful

upload successful

upload successful

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public:
bool hasCycle(ListNode *head) {
ListNode *fast = head;
ListNode *slow = head;
while(fast != NULL && fast->next != NULL && fast->next->next != NULL && fast->next->next->next != NULL) {
slow = slow->next;
fast = fast->next->next->next;
if(slow == fast) return true;
}
return false;
}
};
---------------------------- 本 文 结 束 感 谢 阅 读 ----------------------------
欢迎打赏~
0%