给定一个带有头结点 head
的非空单链表,返回链表的中间结点
如果有两个中间结点,则返回第二个中间结点
示例 1:
输入:[1,2,3,4,5] 输出:[3,4,5] 返回的是中间节点,输出该节点之后的所有节点
示例 2:
输入:[1,2,3,4,5,6] 输出:[4,5,6] 返回的是中间节点,输出该节点之后的所有节点
分析过程:
1)求得链表的长度
2) 从第一个节点开始向后走链表长度的一半,就是中间节点
public int getLength(ListNode head){
if(head==null){
return 0;
}
int count=0;
ListNode cur=head;
while(cur!=null){
count++;
cur=cur.next;
}
return count;
}
//返回中间节点
public ListNode middleNode(ListNode head) {
ListNode cur = head;
int len = getLength(head)/2;
for (int i = 0; i < len; i++) {
cur = cur.next;
}
return cur;
}