141. Linked List Cycle

1.描述

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

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

2.分析

快慢指针,慢指针一次走一步,快指针一次走两步。
如果快指针与慢指针相遇,则说明存在环。

3.代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
bool hasCycle(struct ListNode *head) {
    if (NULL == head || NULL == head->next || NULL == head->next->next) return false;
    struct ListNode *fast = head->next->next;
    struct ListNode *slow = head;
    while (fast != slow) {
        if (NULL == fast->next || NULL == fast->next->next) return false;
        fast = fast->next->next;
        slow = slow->next;
    }
    return true;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容