“月缺不改光,剑折不改刚”有志向的人自信自强;“君子量不极,胸吞百川流”有志向的人心有远方;“丈夫非无泪,不洒离别间”有志向的人情深意长;“及时当勉励,岁月不待人”有志向的人不会虚度时光;“人生感意气,功名谁复论”有志向的人看淡名利;“感时思报国,拔剑起蒿莱”有志向的人是最可靠的力量。“愿君学长松,慎勿作桃李”新时代,新舞台。让我们“共矜然诺心,各负纵横志”。
Leetcode原题
思路
这一题,还是比较简单的,让输出中间的链表节点值。如果是链表长度是奇数可以直接输出中间数。偶数的话,输出中间数后一个。
方法一 遍历迭代长度输出
就是通过遍历的同时把值放到一个集合数组中。同时我们可以得到这个链表的长度是奇数还是偶数。然后我们得到中间数的下标,直接输出即可。实现简单,可自己实现
方法二 快慢指针
如果你做过上一篇博客,回文链表你就好发现一个规律。我要是使用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套哦~