美文网首页
快慢指针寻找链表中间结点

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

作者: 月牙眼的楼下小黑 | 来源:发表于2019-02-18 14:36 被阅读16次
  • 声明: 转载文字或图片请在文首注明出处,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:

  • 示例L = 2:

  • 示例L = 3:
  • 示例L = 4:

  • 示例L = 5:

  • 示例L = 6:


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


相关文章

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

    声明: 转载文字或图片请在文首注明出处,3Q. 原理: 我们设置两个指针 slow 和 fast, slow 每...

  • [Leetcode] 876. 链表的中间结点

    876. 链表的中间结点 来源: 876. 链表的中间结点 1. 解题思路 利用快慢指针 2. 代码

  • 234. 回文链表

    一. 题目: 二. 思路: 快慢指针找到中间结点,反转中间结点以后的链表 拿反转之后的链表和前面链表进行比较,如果...

  • 0876-链表的中间结点

    链表的中间结点 方案一 使用快慢指针 借助单链表实现 C-源代码

  • 23_链表中倒数第k个节点

    要求:输入一个链表,输出该链表中倒数第k个结点。思路:使用快慢(双)指针,准备两个指针A和B,A指针指向头结点,A...

  • 876. 链表的中间结点 思路:快慢指针

    876. 链表的中间结点 思路:快慢指针 解题思路 如果先遍历再查找中间节点,那么随着数据量增大将非常消耗性能!利...

  • Algorithm小白入门 -- 数组

    数组双指针技巧数组删除、去重 1. 双指针技巧 1.1 快慢指针 快慢指针一般都初始化指向链表的头结点head,前...

  • Leetcode234-回文链表(2019 408源题)

    题目:Leetcode234 解答: 基本思路:快慢指针找到中间结点+反转后半部分的链表 方法一: 时间复杂度:n...

  • 2.链表类的设计

    反转链表 检查是否是环形链表 快慢指针,快指针走两步,慢指针走一步,相遇或者能找到nil尾结点 删除链表中的重复元...

  • Leetcode876-链表的中间结点(注意细节)

    题目:链表的中间结点 解答: 算法思路:快慢指针 时间复杂度:n/2;空间复杂度:1 0ms;100% 以前写的代...

网友评论

      本文标题:快慢指针寻找链表中间结点

      本文链接:https://www.haomeiwen.com/subject/ruyaeqtx.html