Re: [請益] linked list裡如何找cycle?
※ 引述《adrianshum (Alien)》之銘言:
: ※ 引述《pikahacker (喵)》之銘言:
: : 作者: pikahacker (喵) 看板: Prob_Solve
: : 標題: [請益] linked list裡如何找cycle?
: : 時間: Mon Jan 25 13:06:55 2010
: : 如果有人給妳一個linked list
: : 有辦法在O(N)時間內,得知linked list中有沒有cycle?
: 初出來工作的時候, 有些老大出了這問題
: 當初沒有說用O(N) 的, 我想了一個麻煩的方法.
: 後來他說其實有一個 O(N) 的方法, 我再想一想
: 就想到了
: 其實比較像智力問題. 想自己想的話先不要往下看
: 防雷
: 兩支 ptr 指著 head, ptr A 每次往前移2格, ptr B 每次
: 移1格.
: 要是 ptr A reach 到 null 即是 non-cyclic
: 要是有一刻 ptr B 等如 A, 就是 cyclic
話說,這個linked list是哪種linked list?
如果是單向、每個node只能指向一個其它node的話......
......,那只要掃過一次所有node看看有沒有node指向null就好了,沒有就是有
cycle,因為此種linked list要是有迴圈就一定是最後一個點指回了前面某個點XD。
不會是分支造成的,因為沒法指向第二個點XD。時間上是O(N),而且不需要額外的兩
個ptr,只需要一個bool flag XD
當然這只判定了有沒有,並沒找出那一圈是啥。不過內文寫「得知linked list
中有沒有cycle」,那麼這樣就可以了。
--
「你會死。」不由分說,他被狠狠罵了一頓。
午休時,我拉著他到安靜的地方。「你怎麼對著人這樣說話呢?」
「他本來就會死,難道他不會死?」他抱怨。
--預言師
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: ddavid 來自: 114.42.111.126 (01/25 22:41)
※ 編輯: ddavid 來自: 114.42.111.126 (01/25 22:43)
→
01/26 00:47, , 1F
01/26 00:47, 1F
→
01/26 00:48, , 2F
01/26 00:48, 2F
→
01/26 00:49, , 3F
01/26 00:49, 3F
→
01/26 03:18, , 4F
01/26 03:18, 4F
推
01/26 04:43, , 5F
01/26 04:43, 5F
→
01/26 04:43, , 6F
01/26 04:43, 6F
推
01/26 10:34, , 7F
01/26 10:34, 7F
→
01/26 10:35, , 8F
01/26 10:35, 8F
→
01/26 10:35, , 9F
01/26 10:35, 9F
→
01/26 10:36, , 10F
01/26 10:36, 10F
→
01/26 10:37, , 11F
01/26 10:37, 11F
→
01/26 10:37, , 12F
01/26 10:37, 12F
→
01/26 10:38, , 13F
01/26 10:38, 13F
→
01/26 11:25, , 14F
01/26 11:25, 14F
→
01/26 11:25, , 15F
01/26 11:25, 15F
→
01/26 11:26, , 16F
01/26 11:26, 16F
→
01/26 11:26, , 17F
01/26 11:26, 17F
→
01/26 11:26, , 18F
01/26 11:26, 18F
→
01/26 11:27, , 19F
01/26 11:27, 19F
→
01/26 11:27, , 20F
01/26 11:27, 20F
推
01/26 12:02, , 21F
01/26 12:02, 21F
→
01/26 12:02, , 22F
01/26 12:02, 22F
→
01/26 12:02, , 23F
01/26 12:02, 23F
→
01/26 12:02, , 24F
01/26 12:02, 24F
推
01/26 12:17, , 25F
01/26 12:17, 25F
→
01/26 12:18, , 26F
01/26 12:18, 26F
→
01/26 12:18, , 27F
01/26 12:18, 27F
→
01/26 12:19, , 28F
01/26 12:19, 28F
→
01/26 12:52, , 29F
01/26 12:52, 29F
→
01/26 12:53, , 30F
01/26 12:53, 30F
→
01/26 12:53, , 31F
01/26 12:53, 31F
→
01/26 12:54, , 32F
01/26 12:54, 32F
討論串 (同標題文章)