Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
[Thoughts]
设定两个指针,一个每次走一步,一个每次走两步,如果链表上有环的话,两个指针必定能相遇。否则,则无环
[Code]
1 bool hasCycle(ListNode *head) {
2 if(head == NULL) return false;
3 ListNode* first = head;
4 ListNode* second = head->next;
5
6 while(first != NULL && second != NULL)
7 {
8 if(first == second) return true;
9 first = first->next;
10 second = second->next;
11 if(second == NULL)
12 return false;
13 second = second->next;
14 }
15 return false;
16 }
本文介绍了一种使用快慢指针的方法来判断链表中是否存在环。通过设置一个每次前进一步的慢指针和一个每次前进两步的快指针,在遍历过程中观察两者是否会在某一点相遇来判断链表是否有环。
1172

被折叠的 条评论
为什么被折叠?



