私は現在、以前のデータ構造の知識を再学習しており、HackerRankなどの問題に取り組むことに決めました。私はリンクされたリストでサイクルを検出する必要がある簡単な質問に出くわしましたが、私が間違っていることを理解できないようです。私は他の答えを見て、その構文とロジックを理解しましたが、私のコードが失敗するロジックを見つけることができないようです。私のコードでエラーがありますか? (リンクされたリスト内のサイクル)
boolean hasCycle(Node head) {
if (head == null || head.next == null){
return false;
}
Node first = head;
Node second = head.next;
while (second != null){
if (first == second)
{
return true;
}
first = first.next;
second = second.next.next;
}
return false;
}
サイクルではどういう意味ですか? –
最初の「尾」ノードが頭を指している、循環リンクリストの代わりに、完全なリンクリストをチェックして、それが円形かどうかを確認します。サイクルがある場合は、1つのノードが別の前のノードをポイントする場所になります。問題を迫っています:https://www.hackerrank.com/challenges/ctci-linked-list-cycle –
このプログラムは、デバッガで1行ずつ進めることができる程度に小さくなっています。 –