题目描述
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
题目思路
思路一:遍历一遍链表,转移到数组中
思路二:遍历一边链表,得到长度后再去遍历
思路三:双指针,一个走一步,一个走两步
代码
思路三:
class Solution {
public ListNode middleNode(ListNode head) {
ListNode fast = head;
ListNode slow = head;
while(fast != null&&fast.next != null)
{
fast = fast.next.next;
slow = slow.next;
}
return slow;
}
}