美文网首页
Java实现求链表的中间结点

Java实现求链表的中间结点

作者: 初心myp | 来源:发表于2019-06-13 14:12 被阅读0次

给出任意单向链表,找出并返回该链表的中间节点。

奇数长度的链表,例如:1->2->3->4->5
返回节点 3
偶长度的链表,例如:1->2->3->4->5->6
返回节点 4

思路:可以使用链表中环检测的方法,使用快慢指针来解决
定义两个指针fast和slow。slow一次遍历一个节点,fast一次遍历两个节点,由于fast的速度是slow的两倍,所以当fast遍历完链表时,slow所处的节点就是链表的中间节点。

代码如下:

    public class ListNode {
        int val;
        ListNode next;

        ListNode(int x) {
            val = x;
        }
    }
    
    /**
     * 寻找链表的中间节点
     * 
     * @param node
     * @return
     */
    public static ListNode middleNode(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }

        ListNode slow = head;
        ListNode fast = head.next;

        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
        }

        
        return fast == null ? slow : slow.next;
    }
  

相关文章

  • Java实现求链表的中间结点

    给出任意单向链表,找出并返回该链表的中间节点。 奇数长度的链表,例如:1->2->3->4->5返回节点 3偶长度...

  • 链表--求链表的中间结点

    给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 输入:...

  • 求单向链表的中间结点

    求单向链表的中间结点 需求 非空的单向链表,返回其中间节点。如果有两个中间结点,返回第二个。链表大小控制在1~10...

  • 链表算法归纳

    1.单链表反转 2.链表中环的检测 3.两个有序的链表合并 4.删除链表倒数第n个结点 5.求链表的中间结点

  • 6-6 求单链表结点的阶乘和

    6-6 求单链表结点的阶乘和(15 分) 本题要求实现一个函数,求单链表L结点的阶乘和。这里默认所有结点的值非负,...

  • 0876-链表的中间结点

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

  • 链表

    1.反转链表 2.链表中环的检查 3.两个有序的链表合并 4.删除链表倒数第n个结点 5. 求链表的中间结点 Li...

  • 力扣算法 - 链表的中间结点

    链表的中间结点 题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回...

  • LeetCode 876. 链表的中间结点

    876. 链表的中间结点 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返...

  • 常见算法总结

    链表 单链表反转链表中环的检测两个有序的链表合并删除链表倒数第 n 个结点求链表中间第n个节点

网友评论

      本文标题:Java实现求链表的中间结点

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