给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。
class Solution {
public ListNode middleNode(ListNode head) {
ListNode ans=head;
ListNode first=head;
int a=1;
while(first.next!=null){
first=first.next;
a++;
}
int b=0;
if(a%2==0){
b=a/2+1;
}
else{
b=(a+1)/2;
}
a=1;
while(a<b){
ans=ans.next;
a++;
}
return ans;
}
}
示例代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode middleNode(ListNode head) {
ListNode mid = head;
ListNode next = head.next;
while(true){
if(next==null){
break;
}
next = next.next;
mid = mid.next;
if(next==null){
break;
}
next = next.next;
}
return mid;
}
}