快速查找长度未知的单链表的中间结点
来源:互联网 发布:手机淘宝扫一扫 编辑:程序博客网 时间:2024/04/30 03:01
在小甲鱼的《数据结构与算法》上,看到的一道企鹅的面试题。
我想到的方法比普通的方法要快,但不是最快的。
普通方法:先遍历单链表,获取长度后,再找到中间结点。假设长度是L,则所需时间为O(L)+O(L/2) = O(3/2L)
我想到的方法:因为想到要获取中间结点,那必须知道长度啊,因此遍历单链表是必需的,在遍历时,将每个结点的值放在数组中,遍历结束知道长度后,从数组中取中间长度的值即可,需要的时间为O(L)。(因为单链表长度未知,所以初始化数组时就比较麻烦,如果初始数组的长度比单链表的长度短,那就需要动态数组,这样时间开销就不是O(L)了,该方法有不确定性)
小甲鱼讲的方法:快慢指针法,定义2个指针,一个快指针,一个慢指针,快指针的步长是慢指针的2倍,从头开始遍历链表,当快指针到尾时,慢指针正好指向链表的中间结点,该方法需要的时间为O(1/2L)
0 0
- 快速查找长度未知的单链表的中间结点
- 快速找到未知长度单链表的中间结点
- 快速查找未知长度单链表的中间节点
- 快速查找未知长度单链表的中间节点
- 快速找到未知长度单链表的中间节点
- 快速找到未知长度单链表的中间节点
- 快速找到未知长度单链表的中间节点
- 快速找到未知长度单链表的中间节点。(腾讯)
- 【腾讯】快速找到未知长度单链表的中间节点
- 快速找到未知长度单链表的中间节点
- 学习篇--快速查询未知长度单链表的中间元素
- 快速找到未知长度单链表的中间节点
- 如何快速找到未知长度单链表的中间节点
- c语言快慢指针之找未知长度单链表中间结点 的值并显示
- 获取未知长度单链表的中间节点
- 一个有头尾的单链表,长度未知,如何快速的找出位于中间的那个元素?
- 百度面试题:一个单链表,长度未知,如何快速的找出位于中间的那个元素
- 百度面试题:一个单链表,长度未知,如何快速的找出位于中间的那个元素
- linux用户管理,运行级别
- Ubuntu在VirtualBox下的磁盘空间扩展
- 如何取DataGridViewCheckBoxCell值
- 从view角度看dialog 和 toast
- options for pipe mode
- 快速查找长度未知的单链表的中间结点
- 不使用*、/、+、-、%操作符求一个数的1/3[算法]
- 文章标题
- 线程池的简单实现
- Single Number II
- 在Android项目中(百度地图),报错:key验证出错,请在AndroidManifest.xml文件中检查key设置
- 牛腩新闻发布系统(4)——可变宽度的圆角框制作
- ACM--Expanding Fractions
- STL容器的适用情况