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

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

Leetcode原题

876.链表的中间结点

在这里插入图片描述

思路

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

方法一 遍历迭代长度输出

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

方法二 快慢指针

如果你做过上一篇博客,回文链表你就好发现一个规律。我要是使用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;
    }

、
第一次发现自己这么有脑子哈哈 ~~

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

收破烂的小熊猫~

你的鼓励将是我创造最大的东西~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值