算法打卡Day13_leetcode _876. 链表的中间结点

“月缺不改光,剑折不改刚”有志向的人自信自强;“君子量不极,胸吞百川流”有志向的人心有远方;“丈夫非无泪,不洒离别间”有志向的人情深意长;“及时当勉励,岁月不待人”有志向的人不会虚度时光;“人生感意气,功名谁复论”有志向的人看淡名利;“感时思报国,拔剑起蒿莱”有志向的人是最可靠的力量。“愿君学长松,慎勿作桃李”新时代,新舞台。让我们“共矜然诺心,各负纵横志”。
算法打卡Day13_leetcode _876. 链表的中间结点_第1张图片

Leetcode原题

876.链表的中间结点

算法打卡Day13_leetcode _876. 链表的中间结点_第2张图片

思路

这一题,还是比较简单的,让输出中间的链表节点值。如果是链表长度是奇数可以直接输出中间数。偶数的话,输出中间数后一个。

方法一 遍历迭代长度输出

就是通过遍历的同时把值放到一个集合数组中。同时我们可以得到这个链表的长度是奇数还是偶数。然后我们得到中间数的下标,直接输出即可。实现简单,可自己实现

方法二 快慢指针

如果你做过上一篇博客,回文链表你就好发现一个规律。我要是使用2个不同移动步数的指针。即快慢指针,一个每次移动2步,一个移动1步。刚好,快指针走完,走到末尾的时候,慢指针刚好走到链表中的位置。所以我们就这样这样快速实现

    public ListNode middleNode(ListNode head) {
        if(head ==null){
            return null;
        }

        ListNode fastPro =head;
        ListNode slowPro =head;
        while(fastPro!=null && fastPro.next !=null){
            fastPro =fastPro.next.next; //快指针每次2步
            slowPro =slowPro.next; //慢指针1步
        }
        return slowPro;
    }

算法打卡Day13_leetcode _876. 链表的中间结点_第3张图片
第一次发现自己这么有脑子哈哈 ~~

祝大家五一节日快乐哦。。。。
有兴趣的老爷,还可以关注我的公众号【一起收破烂】,回复【006】获取 最新java面试资料以及简历模型120套哦~
在这里插入图片描述

你可能感兴趣的:(算法每日进步,链表,leetcode,算法)