Linked List Cycle

来源:互联网 发布:青天白日t恤 淘宝 编辑:程序博客网 时间:2024/06/01 20:35

一、问题描述

Given a linked list, determine if it has a cycle in it.

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:    bool hasCycle(ListNode *head) {        if(head == NULL || head -> next == NULL)             return false;        if(head -> next == head)            return true;        ListNode *fast = head -> next -> next;        ListNode *slow = head -> next;        while(fast != slow && fast != NULL && fast -> next != NULL){            fast = fast -> next -> next;            slow = slow -> next;            if(fast == slow)                return true;        }        return false;    }};


0 0