[LeetCode] Linked List Cycle II

来源:互联网 发布:sql数据类型转换 编辑:程序博客网 时间:2024/06/08 06:24

题目:

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

思路:


0 0
原创粉丝点击