Linked List Cycle II

来源:互联网 发布:淘宝企业店铺委托书 编辑:程序博客网 时间:2024/05/18 23:54

Given a linked list, return the node where the cycle begins. If there is no cycle, return null.

Note: Do not modify the linked list.

Follow up:
Can you solve it without using extra space?

Subscribe to see which companies asked this question

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode *detectCycle(ListNode *head) {       if(head==NULL) return head;       ListNode* slow=head;       ListNode* fast=head;       while(fast!=NULL && fast->next!=NULL)       {           slow=slow->next;           fast=fast->next->next;           if(slow==fast)           break;       }       if(fast==NULL || fast->next==NULL) return NULL;       slow=head;       while(slow!=fast)       {           slow=slow->next;           fast=fast->next;       }       return fast;    }};


0 0
原创粉丝点击