給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 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 輸出...