我有一個指針數組(這是算法,所以不要進入語言細節)。大多數情況下,這個數組指向數組之外的位置,但是它會降低到數組中每個指針指向數組中另一個指針的地步。最終,這些指針形成一個無限循環。如何在指針數組中找到無限循環?
所以在整個陣列由指針到陣列中的其他位置,你從頭開始的假設,你怎麼能找到環在時間和空間效率最高的長度?我相信最好的時間效率是O(n),因爲你必須循環陣列,最好的空間效率是O(1),但我不知道如何實現。
Index: 0 1 2 3 4 5 6
Value: *3 *2 *5 *4 *1 *1 *D
D是循環開始前指向的數據。在這個例子中,週期是1,2,5,並且它無限重複,但是索引0,3和4不是週期的一部分。
難道你只是通過指針,當你點擊一個與你的開始指針指向的元素相同的元素時,結束搜索並計算你所經歷的元素數量? – Calpis
這些要點是否改變?或者從一開始就修正了這些要點? –
總是有一個'循環'嗎?可以有零?會不止有一個?如果不止一個,你需要找到全部,還是隻有一個? – hatchet