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套哦~