環形鍊錶II

2021-10-21 06:28:32 字數 1266 閱讀 4076

題目描述:給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 null。

示例1:

輸入:head = [3,2,0,-4], pos = 1

輸出:返回索引為 1 的鍊錶節點

解釋:鍊錶中有乙個環,其尾部連線到第二個節點。

示例2:

輸入:head = [1,2], pos = 0

輸出:返回索引為 0 的鍊錶節點

解釋:鍊錶中有乙個環,其尾部連線到第乙個節點。

示例3:

輸入:head = [1], pos = -1

輸出:返回 null

解釋:鍊錶中沒有環。

求解思路:快慢指標交點到環入口點的距離等於煉表頭到環入口點的距離。

建立快慢指標,迴圈尋找快慢指標的交點,找到交點後break迴圈;

若鍊錶指向存在null(即迴圈結束),則鍊錶為無環鏈表,返回null;

讓cur從鍊錶頭部head開始走,讓fast或slow(此處fast和slow是相同位置)從交點處走,cur與fast或slow的交點即為環的入口點。(交點到環入口點距離等於頭到入口點距離)。

**實現:

public

class

solution

//2.快慢指標,尋找快慢指標的交點

listnode fast = head;

listnode slow = head;

while

(fast != null && fast.next != null)

}//3.鍊錶指向存在null,則鍊錶為無環鏈表

if(fast == null || fast.next == null)

//4.讓cur從鍊錶頭部head開始走,讓fast或slow從交點處走,cur與fast的交點即為環的入口點。(交點到環入口點距離等於頭到入口點距離)

listnode cur = head;

while

(cur != fast)

return cur;

}}

環形鍊錶 II

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。說明 不允許修改給定的鍊錶。示例 1 輸入 head 3,2,0,4 pos 1 輸出...

環形鍊錶II

1.問題描述 給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回null。為了表示給定鍊錶中的環,我們使用整數pos來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果pos是 1,則在該鍊錶中沒有環。說明 不允許修改給定的鍊錶。示例 1 輸入 head 3,2,0,4 pos 1 ...

環形鍊錶 II

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。說明 不允許修改給定的鍊錶。definition for singly linked ...