『剣指offer』チェーンテーブルのリングの入口ノード
注意:このブログは更新されません.すべての最新記事は個人独立ブログlimengtingに発表されます.site.技術を共有し、生活を記録し、注目を集めてください.
タイトルはチェーンテーブルにリングが含まれていることを説明します.チェーンテーブルのリングの入口ノードを見つけてください.方法一:空間複雑度O(n)
方法2:空間複雑度O(1)
タイトルはチェーンテーブルにリングが含まれていることを説明します.チェーンテーブルのリングの入口ノードを見つけてください.方法一:空間複雑度O(n)
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
import java.util.HashSet;
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead)
{
// 1、head key hashset, key, value, O(n)
if (pHead == null) return null;
HashSet set = new HashSet<>();
while (pHead != null) {
if (!set.add(pHead)) {
return pHead;
}
pHead = pHead.next;
}
return null;
}
}
方法2:空間複雑度O(1)
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead)
{
// 2、
// , ,
// , , ,
if (pHead == null || pHead.next == null) return null;
ListNode fast = pHead.next.next;
ListNode slow = pHead.next;
while (fast != slow) {
if (fast == null || fast.next == null) {
return null;
}
slow = slow.next;
fast = fast.next.next;
}
fast = pHead;
while (fast != slow) {
slow = slow.next;
fast = fast.next;
}
return fast;
}
}