题目描述
给定一个链表,判断链表中是否有环。
进阶:
你能否不使用额外空间解决此题?
解题思路
快慢指针,慢指针一次走一步,快指针一次走两步,若两者相遇则说明有环,快指针无路可走则说明无环。
代码
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 bool hasCycle(ListNode *head) { 12 ListNode *left = head, *right = head; 13 while(right && right->next && right->next->next){ 14 left = left->next; 15 right = right->next->next; 16 if(left == right) return true; 17 } 18 return false; 19 } 20 };