算法第九天(简单题)链表的中间结点

题目要求:

给定一个头结点为 head 的非空单链表,返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

分析题目:

很明显这给的是一个链表,要求的是返回链表中间的值,如果链表的个数为奇数,则返回中间节点即可,但是当链表的个数是偶数的时候,我们就会发现有两个中间节点,再看题目要求,返回第二个中间节点即可

解题思路:

我的想法是,确定中间点,如果是只有一个的情况下,返回链表后续内容,当中间节点有两个的时候,则返回第二个中间节点,以及其后续的内容。

代码如下:

var middleNode = function(head) {
    let left=head, right=head
    while(right && right.next){
        left=left.next
        right=right.next.next
    }
    return left
};

但是这样的效果并不是很理想,希望以后有时间自己优化一下。

你可能感兴趣的:(前端js,链表,算法,数据结构)