想法:
返回单链表的中间节点:采用双指针方法,慢指针走一步,快指针走2步,当快指针走到头,那么慢指针所在的位置就是链表的中间节点。值得注意的是,要保证可以走两步,必须有快指针的下下节点不为空的判断
public ListNode middleNode(ListNode head) {
ListNode p1 = head;
ListNode p2 = head;
while(p1 != null && p1.next != null){//保证快指针的下下节点不为空
p1 = p1.next.next;
p2 = p2.next;
}
return p2;
}