141 環形鍊錶

2022-06-22 04:48:10 字數 857 閱讀 9324

給定乙個鍊錶,判斷鍊錶中是否有環。

如果鍊錶中有某個節點,可以通過連續跟蹤 next 指標再次到達,則鍊錶中存在環。 為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鍊錶中沒有環。注意:pos 不作為引數進行傳遞,僅僅是為了標識鍊錶的實際情況。

如果鍊錶中存在環,則返回 true 。 否則,返回 false 。

高階:你能用 o(1)(即,常量)記憶體解決此問題嗎?

雙指標法:設定快慢兩個指標,快指標每次走兩步,慢指標每次走一步,若有環,則一定會在某個時刻,快慢指標在環內相遇。

雜湊表法:設定雜湊表來記錄所有遍歷過的結點,若有環,一定會遍歷到重複的結點。

我原本以為雜湊表法的速度會比雙指標法快,結果是我錯付了。仔細一想應該是存表的時間消耗太多了

//c語言,雙指標法

/** * definition for singly-linked list.

* struct listnode ;

*/bool hascycle(struct listnode *head)

}return false;

}

//c++,雜湊表法

/** * definition for singly-linked list.

* struct listnode

* };

*/class solution

seen.insert(head);

head = head->next;

}return false;

}};

141 環形鍊錶

給定乙個鍊錶,判斷鍊錶中是否有環。高階 你能否不使用額外空間解決此題?乙個快指標走兩步 乙個慢指標走一步 如果相遇就有環 不然沒環 class solution def hascycle self,head type head listnode rtype bool index1 head inde...

141 環形鍊錶

鏈結 給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例1輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例2 輸...

141 環形鍊錶

給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。1.首先想到...