数据结构之链表-奇数个元素的链表的中间节点
题目:给定一个奇数个元素的链表,查找出这个链表中间位置的节点的数值。
示例:单链表:1 -> 2 -> 3 -> 4 -> 5 -> null
,中间位置的节点的数值为3
。
思路:由于单链表特性,我们只能先遍历一次才能得到其长度,得到总长度之后我们就知道其中间位置是第几个,再次进行遍历即可得到。这种暴力解法时间复杂度是:O(n) + O(2/n)
。
下面介绍一种时间复杂度更低的解法:快慢指针法。
定义一快一慢两个指针:fast
和slow
,两个指针同时走,快指针每次走两步,慢指针每次走一步,当快指针走到链表末尾的时候,慢指针就恰好在链表中间位置,即我们需要的中间节点。
我们来看快慢指针的Java
语言实现:
单链表节点类定义可查看文章:数据结构之链表-基础知识
1 | public static SinglyLinkedListNode middleNode(SinglyLinkedListNode head) { |
-------------有过牵挂了无牵挂-------------
欢迎关注微信公众号【打工这件小事】~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 打工这件小事!
评论