力扣 - 876. 链表的中间结点
题目
思路
- 利用快慢指针
- 慢指针一步走一个,快指针一步走两个
- 当快指针到达终点时候,slow刚好在中间
代码
class Solution {
public ListNode middleNode(ListNode head) {
ListNode slow = head;
ListNode fast = head;
while (fast != null && fast.next != null) {
fast = fast.next.next;
slow = slow.next;
}
return slow;
}
}
复杂度分析
- 时间复杂度:\(O(N)\),其中 N 为数组长度
- 空间复杂度:\(O(1)\)
我走得很慢,但我从不后退!

浙公网安备 33010602011771号