LeetCode-循環(huán)鏈表

給定一個鏈表,判斷鏈表中是否有環(huán)。
進(jìn)階:
你能否不使用額外空間解決此題?

當(dāng)初面試的時候,基本上都會問到這個問題

/**
 * Definition for singly-linked list.
 * struct ListNode {
 * int val;
 * struct ListNode *next;
 * };
 */

解法一: 雙指針

利用快慢指針,當(dāng)兩個指針相等時,證明有環(huán)。

bool hasCycle(struct ListNode *head) {
    if(head==NULL || head->next == NULL){
        return false;
    }
    struct ListNode *p, *q;
    p = head;
    q = head;
    while(q!= NULL && q->next != NULL){
        p = p->next;
        q = q->next->next;
        if (p == q ){
            return true;
        }
    }
    return false;
}

解法二: 遞歸

bool hasCycle(struct ListNode *head) {
    if(head==NULL || head->next == NULL){
        return false;
    }
    if(head->next = head) return true;
    ListNode *q = head->next;
    head->next = head;
    bool isCycle = hasCycle(*q);
    return isCycle;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容