Linked List Cycle - 循环链表

2016-11-03  本文已影响44人  郑明明
    bool hasCycle(ListNode *head) {
        if (head == NULL || head->next == NULL) {
            return false;
        }
        ListNode *fastNode = head;
        ListNode *slowNode = head;
        while (fastNode->next != NULL && fastNode->next->next != NULL) { // 由于fastNode比slowNode增长快,所以只需要判断fastNode,同时对于fastNode需要判断后两位,所以第一位的判断也是必须的,不然会出现Runtime Error
            fastNode = fastNode->next->next; // 每次往后移动两步
            slowNode = slowNode->next; // 每次往后移动一步
            if (fastNode == slowNode) {
                return true;
            }
        }
        return false;
    }
上一篇 下一篇

猜你喜欢

热点阅读