Linked List Cycle II

来源:互联网 发布:ezdmc编程 编辑:程序博客网 时间:2024/05/29 07:07

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

Follow up:

Can you solve it without using extra space?


/** * 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 || head->next==NULL) return NULL;        ListNode *fast = head, *slow = head;        while(fast && fast->next){            fast = fast->next->next;            slow = slow->next;            if(fast == slow) break;        }        if(fast!=slow) return NULL;        slow = head;        while(slow!=fast){ slow = slow->next; fast = fast->next; }        return slow;    }};


0 0
原创粉丝点击