LeetCode 141. Linked List Cycle

题意:不使用额外的空间,判断一个链表是否有环。
解题:使用两个指针walker和runner,walker每次向后移动一个节点,runner每次向后移动两个节点,若walker或runner或runner->next等于空指针NULL,说明该链表没有环。若有walker==runner,那说明有环。
复杂度:时间复杂度O(N),空间复杂度O(1)。

class Solution {
public:
    bool hasCycle(ListNode *head) {
        ListNode* walker(head);
        ListNode* runner(head);
        while (walker && runner && runner->next) {
            walker = walker->next;
            runner = runner->next->next;
            if (walker == runner)
                return true;
        }
        return false;
    }
};

你可能感兴趣的:(LeetCode 141. Linked List Cycle)