题目意思:链表有环,返回true,否则返回false
思路:两个指针,一快一慢,能相遇则有环,为空了没环
ps:很多链表的题目:都可以采用这种思路
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 if(head==NULL)return false; 13 ListNode *p1,*p2; 14 p1=p2=head; 15 while(p2->next&&p2->next->next){ //要判断p->next->next为空先要判断p->next是否为空,以免产生p->next->next不存在的蛋疼问题 16 p1=p1->next; 17 p2=p2->next->next; 18 if(p1==p2) 19 return true; 20 } 21 return false; 22 } 23 };
时间: 2024-10-06 13:56:02