[动画leetcode高频面试之数组系列之栈队列]1链表的中间节点

这是我的面试经历以及整理的相关面试高频题目,希望对大家有帮助。面试集锦

老规矩,不白嫖,点赞再看!

一 题目

给定一个带有头结点 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 leetcode连接

原题连接

小蓝希望大家在此思考1分钟,

效果会更好哈!

2 题目解析

链表简述

  • 说到链表,难免会想到数组,数组的内存地址空间连续,查找速度快(O(1)),但是插入和删除会因为大量移动元素导致效率不高,所以引入了链表结构。
  • 链表中内存低地址不连续,通过"指针"将零散的地址链接在一起,如下图(单链表)所示。

解题思路

题中需要返回中间节点,我们使用两个指针p,q,p指针一次往前走两步,q指针一次走一步,当快指针p到达末尾也就是NULL的时候,p所指向的就是中间节点。我们看一下动画!

手机端

3 代码实现

  • c++版本

  • python版本

  • java版本

4 收尾

系列算法题均采用三种不同的语言实现,满足不同小伙伴的需求。如有不对的地方希望小伙伴指出,感谢!

❤️ 看完三件事:如果您看完有一点点收获,快速迎娶白富美方式:

1 关注公众号「我是程序员小贱」,第一时间阅读最新的文章,公众号后台回复 [小天使] 送你 最新的编程技术资料。

2 点赞,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)

3 关注我和专栏,让我们成为好基友。

发布了37 篇原创文章 · 获赞 66 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章