快慢指针寻找链表中间结点

  • 声明: 转载文字或图片请在文首注明出处,3Q.

  • 原理: 我们设置两个指针 slowfast, slow 每次移动一步, fast 每次移动两步。

  • 伪码

slow , fast = head, head
while(fast.next and fast.next.next):
  slow = slow.next
  fast = fast.next.next
  • 解释: 设链表长度为 L, 每个结点编号为 1,2, ..., L。 若 L 等于偶数, 则 fast 停下时, slow 停在编号为 L//2 的结点上;若 L 等于奇数, 则 fast 停下时, slow 停在编号为 L//2 + 1 的结点上。

  • 示例L = 1:

    快慢指针寻找链表中间结点_第1张图片

  • 示例L = 2:

    快慢指针寻找链表中间结点_第2张图片

  • 示例L = 3:
快慢指针寻找链表中间结点_第3张图片
  • 示例L = 4:

    快慢指针寻找链表中间结点_第4张图片

  • 示例L = 5:

    快慢指针寻找链表中间结点_第5张图片

  • 示例L = 6:

快慢指针寻找链表中间结点_第6张图片

作 者: 月牙眼的楼下小黑
联 系: zhanglf_tmac (Wechat)
声 明: 欢迎转载本文中的图片或文字,请说明出处


快慢指针寻找链表中间结点_第7张图片

你可能感兴趣的:(快慢指针寻找链表中间结点)