`

【腾讯】快速找到未知长度单链表的中间节点

阅读更多

普通的方法很简单,首先遍历一遍单链表以确定单链表的长度L。然后再次从头节点出发循环L/2次找到单链表的中间节点。算法复杂度为O(L+L/2)=O(3L/2)。

 

能否再优化一下这个时间复杂度呢?有一个很巧妙的方法:设置两个指针* fast、*slow都指向单链表的头节点。其中* fast的移动速度是* slow的2倍。当* fast指向末尾节点的时候,slow正好就在中间了。

 

C源代码如下:

void locate(LinkedList *head){
      LinkedList *fast, *slow;
      fast=slow=head;
      while(fast->next!=NULL){
              //fast的移动速度是slow的2倍
              if(fast->next->next!=Null){
                      fast=fast->next->next;
                      slow=slow->next;
              }else{
                    fast=fast->next;
              }
      }
}
 

另外,快慢指针在解决单链表环问题的时候是非常有用的,具体请参见《★经典问题—链表中的环问题

 

 

0
0
分享到:
评论
2 楼 Heart.X.Raid 2010-06-29  
谢谢seraphim871211,是我糊涂了,确实都是O(n)级别的。
1 楼 seraphim871211 2010-06-29  
引用
普通的方法很简单,首先遍历一遍单链表以确定单链表的长度L。然后再次从头节点出发循环L/2次找到单链表的中间节点。算法复杂度为O(L*(L /2)),即O(L^2)级别。


LZ,时间复杂度不是和两个指针一起跑是一样的吗?只不过两个指针只要一趟遍历。

相关推荐

    面试题快慢链表和快慢指针

    腾讯的一道面试题:如何快速找到位置长度单链表的中间节点?普通方法,就是先遍历,在从头找到2/length的中间节点。算法复杂度是:O(3*n/2)。而更快的方法就是利用快慢指针的原理。 快慢链表:利用标尺的思想,设置...

    Java数据结构与算法-单链表 新浪,腾讯面试题详解

    第二题:我们可以在第一题的基础上,在获取到了链表的长度后,只需要考虑倒数第K个节点是从前面开始第几个节点,我们就循环几次不就可以了?注意如果你的下标从0开始循环那就size – k就可以了,如果你是从1开始的...

    【经典面试题】单链表的常见面试题

    文章目录求单链表中有效节点的个数查找单链表中倒数第k个节点【新浪面试题】单链表的反转【腾讯面试题】从尾到头打印单链表【百度面试题,要求方式1:反向遍历。方式2:Stack栈】 单链表的常见面试题有如下: 1.求...

    腾讯2009校园招聘笔试附加题

    腾讯09年校园招聘 软件开发职位笔试试题 一、单项选择 1、向单链表插入节点; 2、排序的稳定性比较; 3、带头节点的单链表的判空条件; 4、二叉树的节点总数的计算; 5、递归向非递归的转化使用什么?队列,还是栈...

    腾讯全套人力资源管理资料大全.zip

    01-腾讯各职位能力模型图 02-腾讯人力资源管理 03-腾讯招聘体系 04-腾讯培训体系及文化 05-腾讯薪酬绩效 06-腾讯员工职业发展 腾讯产品经理素质与技能要求.pdf 腾讯公司基层管理干部职业领导力发展规划书.pdf 腾讯...

    腾讯地图的聚合、描点、文字、点击大集合

    腾讯地图的聚合+描点+文字+点击大集合

    腾讯面试经验,腾讯面经

    腾讯面试经验,腾讯面经,腾讯面试经验,腾讯面经,腾讯面试经验,腾讯面经

    微信小程序 影音娱乐 仿腾讯视频小程序 (源代码+截图)

    微信小程序 影音娱乐 仿腾讯视频小程序 (源代码+截图)微信小程序 影音娱乐 仿腾讯视频小程序 (源代码+截图)微信小程序 影音娱乐 仿腾讯视频小程序 (源代码+截图)微信小程序 影音娱乐 仿腾讯视频小程序 (源...

    腾讯区块链方案白皮书.pdf

    中间是平台产品服务层为 Trust Platform,在底层(Trust SQL)之上构建高 可用性、可扩展性的区块链应用基础平台产品,其中包括共享账本、鉴证服务、共享经济、数 字资产等多个方向,集成相关领域的基础产品功能,帮助...

    可自动填写腾讯问卷的Python脚本

    可自动填写腾讯问卷的Python脚本,基于selenium实现,同时考虑了防止被封ip,进行了动态调整秒数,用户可根据自己的对选项的概率进行调整,再也不用发红包请别人填问卷啦!!

    腾讯云对象存储静态工具类(CosUtils.java),快速上手!!!

    腾讯云对象存储静态工具类,满足日常工作使用,每个方法都有注释,快速上手!记得先引入Maven依赖,在配置文件中配置对象存储所属参数!

    腾讯:2021腾讯智慧零售T+品牌私域价值榜.pdf

    腾讯:2021腾讯智慧零售T+品牌私域价值榜.pdf 腾讯:2021腾讯智慧零售T+品牌私域价值榜.pdf 腾讯:2021腾讯智慧零售T+品牌私域价值榜.pdf 腾讯:2021腾讯智慧零售T+品牌私域价值榜.pdf 腾讯:2021腾讯智慧零售T+品牌...

    腾讯地图jdk qqmap-wx-jssdk

    腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk...

    腾讯会议pc版备份 腾讯会议pc版备份

    腾讯会议pc版备份 腾讯会议pc版备份

    腾讯云CloudLite云认证

    腾讯云CloudLite认证,英文缩写TCLC(Tencent CloudLite Certificate)是腾讯云推出的线上轻量级技能认证;该认证围绕云计算IaaS,PaaS及SaaS产品及服务展开,旨在帮助致力于从事云计算相关岗位工作的人才快速掌握...

    腾讯社交洞察-腾讯CDC《腾讯00后研究报告_2019版》_2019.pdf

    腾讯社交洞察-腾讯CDC《腾讯00后研究报告_2019版》 他们是中国的00后1。陆续经历成人礼的他们,已成为社会和各行业 重点关注与深入分析的对象。我们同样对正处在青春期的00后感到好 奇,好奇他们的所思所想,好奇...

    腾讯帝国|腾讯|中国180网络

    腾讯外传|马化腾的腾讯帝国

    腾讯地图sig签名生成

    腾讯地图sig签名生成

    腾讯的404页面。腾讯的404页面。腾讯的404页面。腾讯的404页面。

    腾讯的404页面。腾讯的404页面。腾讯的404页面。腾讯的404页面。腾讯的404页面。腾讯的404页面。腾讯的404页面。腾讯的404页面。

Global site tag (gtag.js) - Google Analytics