链表的中间结点

题目描述:

给定一个带有头结点 head 的非空单链表,返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

链接:https://leetcode-cn.com/problems/middle-of-the-linked-list/

思路1:快慢指针

在head处同时使用两个指针quick和slow,quick每次走两步,slow每次走一步,当quick走到终点的时候,slow刚好走到全程的一半

代码:

ListNode是简单的链表结点类,相关代码放在文章最后,有需要的朋友可自行查阅

 思路2:

先遍历链表计算出链表的总长度count,再遍历一半找到所需要的结点,但此处要注意count需要区分奇偶数的情况,偶数时不做额外操作,奇数时自增1。这是因为Java的其他类型变量强制转换为int型变量时会向下取整,比如3/2=1,这样与我们实际需要的值不相符,因此需要做一定的更改

代码:

ListNode类代码:

 以上,希望对各位有所帮助

200323 Rewivy

 

posted @ 2020-03-23 15:55  Rewivy  阅读(188)  评论(0编辑  收藏  举报