帶環鏈表

描述:給定一個鏈表,判斷它是否有環。
思路:採用追趕的方式,設立兩個指針slow,fast,都從頭結點head開始,每次分別前進一步,兩步。如果存在環,兩者最終相遇,否則fast會碰到NULL結束。

class Solution {
public:
    /**
     * @param head: The first node of linked list.
     * @return: True if it has a cycle, or false
     */
    bool hasCycle(ListNode *head) {
        // write your code here
        if(head == NULL) return false;//若是空鏈表,返回false
        ListNode *slow = head, *fast = head;
        while((slow != NULL) && (fast != NULL) && (fast->next != NULL)){//既要slow和fast不爲NULL,也要保證fast->next不爲空
            slow = slow->next;
            fast = fast->next->next;
            if(fast == slow) return true;
        }
        return false;
    }
};

拓展:帶環鏈表的相關問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章