快慢指针
解题思路
声明两个快慢指针,slow 一次走一步,fast 一次走两步;
那么当 fast 到达链表的末尾时,slow 必然位于中间;
复杂度
-
时间复杂度:
O(N)
,其中 N 是给定链表的结点数目; -
空间复杂度:
O(1)
代码实现
var middleNode = function (head) {
let fast = head;
let slow = head;
// fast 为 null,返回 slow 即可
while (fast && fast.next) {
fast = fast.next.next;
slow = slow.next;
}
return slow;
};
leetcode🧑💻 86. 分隔链表
上一篇