141 linked list cycle

快慢指针,快的一次走两步,慢的一次走一步,当相遇的时候, 返回TRUE

注意如果采用下面这种步进的方法,当判断fast==slow时候需要判断slow!=NULL ,否则出错
比如对于[1] no cycle, fast 走到NULL, slow也走到NULL,但是并没有环

        if(fast){
            fast = fast->next;
        }
        slow = slow->next;
bool hasCycle(struct ListNode *head) {
    if (head == NULL) return false;
    struct ListNode *fast, *slow;
    fast = slow = head;
    while (fast && slow) {
        fast = fast->next;
        if(fast){
            fast = fast->next;
            slow = slow->next;
        }

        if (fast == slow ) return true;
    }

    return false;

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容