1
我的代碼需要在鏈接列表中查找循環。如果有一個週期,那麼輸出是1
;否則結果爲0
。我已經完成了研究並瞭解了弗洛伊德的循環算法,並發現了其他幾個包含該算法代碼的帖子。但是我在HackerRank上的一些測試用例上失敗了。請問請告訴我代碼有什麼問題?謝謝!鏈接列表中的循環
int HasCycle(Node head) {
if(head == null){
return 0;
}
Node slow = head;
Node fast = head;
while(true)
{
slow = slow.next;
if(fast.next != null){
fast = fast.next.next;
}
else{
return 0;
}
if(slow == null || fast == null){
return 0;
}
if(slow.data == fast.data){
return 1;
}
}
}
爲什麼你讓這個返回一個'int'而不是一個'boolean',這將是回答yes/no問題的自然選擇,比如「這是否有循環?」? – ajb
我假設'slow.data == fast.data'應該替換爲'equals()'或Apache的'objectEqual()',除非數據是基本類型。 –
的問題,因爲在我的答案是,即使slow.data == fast.data,並不意味着它是同一個節點! – Untitled123