55 鍊錶中環的入口結點

2021-08-20 09:15:13 字數 730 閱讀 5009

乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。

思路一:使用乙個集合unordered_set來儲存已經訪問過的結點,當第一次訪問到已經被訪問過的結點時,即為環的入口結點,此方法需要額外的空間進行輔助。

**一:

/*

struct listnode

};*/

class solution else

phead = phead->next;

}return res;

}private:

unordered_setmap;

};

思路二:

採用數學分析的方法,設定快慢指標,慢指標每次前進乙個結點,快指標每次前進兩個結點,記相遇時的結點為q,則從q到環入口的距離與從頭結點到入口的距離相等,此時從頭結點和q處同時往後移動,每一移動乙個結點,則相遇處即為環的入口,此方法不需要開闢額外的儲存空間,更佳。

**二:

/*

struct listnode

};*/

class solution

if(fast == null || fast->next == null) return null; //不存在環的情況

slow = phead;

while(slow && fast)

return null;

}};

55 鍊錶中環的入口結點

題目描述 給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。struct listnode class solution 兩個指標乙個fast 乙個slow同時從乙個鍊錶的頭部出發 fast一次走2步,slow一次走一步,如果該鍊錶有環,兩個指標必然在環內相遇 此時只需要把其...

55 鍊錶中環的入口結點

題目描述 給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。分析 1.得出鍊錶中環內節點數n 使用快慢指標,乙個每次走一步,乙個每次走兩步。兩指標相遇,表明鍊錶中存在環,且相遇的結點一定在環中。從相遇結點出發邊移動邊計數,直至再次回到此結點,得出環中結點數n。2.用兩個指標p...

55 鍊錶中環的入口結點 python

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。思路如果slow走了l的長度那麼fast走了2l 假設從開始到入口點的長度是s,slow在環裡走的長度是d 那麼 l s d 假設環內slow沒走的長度是m,fast走的長度是n m d d s 2l 帶入得n m d d s...