每日刷題 環形鍊錶II

2021-09-28 20:03:37 字數 1299 閱讀 9361

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

為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鍊錶中沒有環。

說明:不允許修改給定的鍊錶。

示例:

例 1:

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

輸出:tail connects to node index 1

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

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

輸出:tail connects to node index 0

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

示例 3:

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

輸出:no cycle

方法一:使用輔助空間,記錄已經走過的結點。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

return

null;}

};

上述方法用了輔助空間,並不太理想,我們力求乙個原地演算法。

方法二:快慢指標

設定兩個指標,乙個走得快,乙個走的慢。若存在環,則必定相遇。

先檢查是否存在環,若不存在,則返回 null. 若存在,則停留在相遇的結點。

若相遇,則再次設定兩個指標,乙個指向當前相遇的結點、乙個指向鍊錶頭部,每次將它們移動一步,再次相遇時,就是鍊錶的環中的入口結點。

**:

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solutionif(

!pre)

return

null

;

now = head;

while

( now != pre)

now = now-

>next, pre = pre-

>next;

return now;}}

;

每日刷題 反轉鍊錶II

反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。說明 1 m n 鍊錶長度。示例 輸入 1 2 3 4 5 null,m 2,n 4 輸出 1 4 3 2 5 null 這道題屬於閱讀理解題。沒有太多複雜的演算法,注意不要斷鏈即可。跟著 走一遍就懂了。definition for singl...

2021 1 22 刷題(環形鍊錶

題目描述 給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。注意,pos 僅僅是用於標識環的情況,並不會作為引數傳遞到函式中。說明 不允...

環形鍊錶 II

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