//总体思路,当只有一个结点时候返回这个结点,这是特殊情况。
然后先写一个计算结点个数的方法,然后走mid次将head赋值给当前结点。返回head。
class Solution {
public int listSize(ListNode head){
ListNode cur=head;
int count=0;
while(cur!=null){
count++;
cur=cur.next;
}
return count;
}
public ListNode middleNode(ListNode head) {
if(head.next==null){
return head;
}
int mid=listSize(head)/2;
for(int i=0;i<mid;i++){
head=head.next;
}
return head;
}
}
方法二:
class Solution {
public ListNode middleNode(ListNode head) {
if(head==null){
return null;
}
ListNode fast=head;
ListNode slow=head;
while(fast!=null&&fast.next!=null){
fast=fast.next.next;
slow=slow.next;
}
return slow;
}
}