题意:判断链表中有无环,不使用额外的存储空间。
这个题很有意思,把链表想象成一条公路的话,一辆车和一个人从起点同时出发,如果有环的话他们一定会相遇。
这里用两个指针代表车和人,车的速度是2,人的速度是1。
class Solution {
public:
bool hasCycle(ListNode *head) {
ListNode *a = head, *b = head;
if(head==NULL || head->next==NULL || head->next->next == NULL) return 0;
while(1){
a = a->next; if(a==NULL) return 0;
a = a->next; if(a==NULL) return 0;
b = b->next;
if(a==b) return 1;
}
}
};