这题考察的也是快慢指针。
我们对偶数和奇数分别进行分析:
当链表是偶数时,我们需要判断他自身是否为 null,如果为 null,说明到了末尾。
当链表是奇数时,我们需要判断他的 next 是否为 null,如果是 null,说明到了末尾。
代码如下:
class Solution {
public ListNode middleNode(ListNode head) {
ListNode first = head;
ListNode second = head;
while(first != null && first.next != null){
first = first.next.next;
second = second.next;
}
return second;
}
}
延伸:判断一个使用链表存储的字符串是否是回文字符串
参考:https://www.jianshu.com/p/e1e546241a31