Leetcode daily 20/03/23 链表的中间结点

链表的中间结点

-题目-

给定一个带有头结点 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。

-示例1-

输入:[1,2,3,4,5]
输出:此列表中的结点 3 (序列化形式:[3,4,5])
返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。
注意,我们返回了一个 ListNode 类型的对象 ans,这样:
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NULL.

-示例2-

输入:[1,2,3,4,5,6]
输出:此列表中的结点 4 (序列化形式:[4,5,6])
由于该列表有两个中间结点,值分别为 3 和 4,我们返回第二个结点。

-提示-

给定链表的结点数介于 1 和 100 之间。


-方法1-

  • 遍历节点,把节点放到一个列表里。取中间结点即可。

-ac代码-

class Solution:
    def __init__(self):
        self.node_list = []

    def middleNode(self, head: ListNode) -> ListNode:
        while True:
            self.node_list.append(head)

            if head.next:
                head = head.next
            else:
                break
        
        return self.node_list[int(len(self.node_list) / 2)]

-复杂度-

  • \(T(n) = O(n)\)
  • \(S(n) = O(n)\)
posted @ 2020-03-23 12:24  Sola~  阅读(108)  评论(0编辑  收藏  举报