专栏首页学习有记[LeetCode Python 3] 876. Middle of the Linked List(链表的中间结点)

[LeetCode Python 3] 876. Middle of the Linked List(链表的中间结点)

给定一个带有头结点 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,我们返回第二个结点。

提示:

  • 给定链表的结点数介于 1100 之间。

思路:

设置两个指向头节点的快慢指针,快指针每次走两步,慢指针每次走一步,当快指针到达最后结点或为空时,慢指针指向的就是中间结点 。

解题代码Python 3:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def middleNode(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        pa=pb=head
        while pa and pb.next:
            if pb.next.next==None:
                return pa.next
            pa=pa.next
            pb=pb.next.next
        return pa

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [LeetCode Python3]566. Reshape the Matrix(重塑矩阵)

    在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。

    Woodson
  • 使用 pyinstaller 打包 py 文件成 exe 程序

    Woodson
  • 2018 蓝桥杯省赛 B 组模拟赛(五)题目及解析

    Woodson
  • 数据结构 | 每日一练(23)

    ——老子

    C语言入门到精通
  • 极客算法训练笔记(三),链表详细图解,别再逃避了朋友

    上一篇说的是数组,然后现在来说说链表。链表有个经典应用,就是实现LRU缓存淘汰算法,缓存的作用大家肯定都知道,常见的Redis缓存,CPU缓存,数据库缓存,浏览...

    阿甘的码路
  • 数据结构 | 每日一练(44)

    ——老子

    C语言入门到精通
  • 数据结构 | 每日一练(48)

    1.设 Listhead 为一单链表的头指针,单链表的每个结点由一个整数域 DATA 和指针域 NEXT 组成,整数在单链表中是无序的。编一 PASCAL 过程...

    C语言入门到精通
  • 数据结构 | 每日一练(73)

    ——老子

    C语言入门到精通
  • [leetcode链表系列] 1 链表的中间节点

    ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NU...

    我是程序员小贱
  • 「优质题解」出圈

    https://www.dotcpp.com/oj/problem1160.html

    编程范 源代码公司

扫码关注云+社区

领取腾讯云代金券