链表的中间结点
题目描述:
给定一个带有头结点 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