求链表的中间节点

这题考察的也是快慢指针。

我们对偶数和奇数分别进行分析:

image.png

当链表是偶数时,我们需要判断他自身是否为 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

你可能感兴趣的:(求链表的中间节点)