您的位置:首页 > 其它

leetcode linked list cycle

2014-07-23 16:59 309 查看
链表有环检测,多一个要求找出环的起点。

琢磨了一晚上,终于想出来了,挺开心的。

struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};

ListNode *detectCycle(ListNode *head) {
if(!head) return head;
ListNode *p1 = head, *p2 = head;
while (p2->next)
{
p1 = p1->next;
p2 = p2->next->next;
if(!p2 || p1 == p2)break;
}
if(p2 == NULL || p2->next == NULL)return NULL;

p2 = head;
while(p1 != p2){
p1 = p1->next;
p2 = p2->next;
}
return p1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: