インタビューの質問では、「ループの存在を検出するアルゴリズムを実装してください。」. たとえば、リンクされたリストには次のようなループがあります。
0--->1---->2---->3---->4---->5---->6
▲ |
| ▼
11<—-22<—-12<—-9<—-8
Floyd のサイクル検出を使用すると、高速 & 低速ポインターを使用することでこの問題を解決できます。じゃあ比較してみようかな
を。リンクのノード値、つまり
if (fast.data == slow.data)
break;
fast と slow はタイプですLink
class Link
{
int IData {get; set;}
Link Next {get; set;}
}
また
b. それらは同じ参照を指していますか、つまりif (fast == slow)
ありがとう。