【leetcode】876:链表的中间结点

这道题非常经典,其中快慢指针的思想可以覆盖到很多有链表的题目,值得深刻钻研,我们来看看这道题的原题是什么样的:

 

 也就是说,我们需要找到一个链表当中的中间元素。如果linked list的nodes个数为偶数,则返回中间的那个node,如果linked list的nodes为奇数,则返回第二个中间节点(因为中间节点有两个的缘故)。因此我们需要分两种情况进行分类讨论,如下:

 

 

 

 因此我们有代码:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def middleNode(self, head: ListNode) -> ListNode:
        slow = fast = head
        while fast and fast.next:
            slow = slow.next
            fast = fast.next.next
        return slow

得解!记得做同样类型的题目,leetcode109 有序列表转化为二叉树哦!

posted @ 2021-08-25 20:56  Geeksongs  阅读(26)  评论(0编辑  收藏  举报

Coded by Geeksongs on Linux

All rights reserved, no one is allowed to pirate or use the document for other purposes.