ここにカタログタイトルを書く
1.タイトル
2.私の最初の考えと問題
この質問は、循環リンクリストIに基づく拡張です。ハッシュテーブル方式と高速および低速ポインタ方式の両方を覚えていますが、この質問のハッシュテーブル方式は比較的単純であり、一方、高速ポインタと低速ポインタは比較的複雑ですが、少しです。
3.問題解決方法1:ハッシュテーブル
自分で書いたコードに直接:
public class Solution {
public ListNode detectCycle(ListNode head) {
//hash表
Set<ListNode> set = new HashSet<>();
ListNode temp = head;
while(temp != null){
if(set.contains(temp)){
return temp;
}
//如果没有包含节点,则添加
set.add(temp);
temp = temp.next;
}
return null;
}
}
最初は、循環リンクリストIのように、addのブール戻り値を使用してtempを返す準備をしました。containsメソッドについては考えていませんでした。ここで注意してください。
コアアイデアは、リンクリストをトラバースし、addメソッドを使用してすべてのノードをハッシュテーブルに追加することです。追加するノードがすでに含まれている場合、つまり、が含まれている場合は、追加するノードに戻ります。 、ノードはリングノードの最初です。