力扣刷题——876--链表的中间节点

 简单题,感觉很有意思,分享一下: 

先上代码:

class Solution:
    def middleNode(self, head: Optional[ListNode]) -> Optional[ListNode]:
        number = 1
        res = []
        head_low = head
        head_quick = head
        while  head_quick.next:
            res.append(head.val)
            head_low = head_low.next
            for i in range(0,2):
                head_quick = head_quick.next
                if not head_quick:
                    return head_low
        return head_low

刚开始我的想法是:

先直接一个循环,把链表遍历完,再往回遍历一半,就可以

由于题目中的链表没有定义上下链表可以相互访问,只定义了一个next,所以这个想法就不可行

于是新的想法是:快慢指针,定义一个head_low,和一个head_quick,head_low 往后走一次head_quick就往后走两次,这就实现了返回链表的中间节点

解题代码如上:

虽然简单题,但是感觉这个快慢指针很有意思

猜你喜欢

转载自blog.csdn.net/weixin_53374931/article/details/130209159