`

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

阅读更多

普通的方法很简单,首先遍历一遍单链表以确定单链表的长度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)。而更快的方法就是利用快慢指针的原理。 快慢链表:利用标尺的思想,设置...

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

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

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

    插入节点操作涉及找到合适的位置并更新指针,确保链表的连续性。 2. **排序稳定性比较**:稳定的排序算法在排序过程中,相等元素的相对顺序不会改变。例如,冒泡排序和插入排序是稳定的,而快速排序和堆排序则不是...

    腾讯云从业者考试模拟测试题2-共100道题

    节点监控是腾讯云CDN的一个优势,能够快速剔除故障的主机,提高服务的可靠性。动态路由协议、组播心跳机制和区域节点探测都是监控和故障处理中的一部分。 6. 音视频APP优化: 如果音视频APP的用户连接成功率不高...

    大规模游戏社交网络节点相似性算法及其应用-3-5 腾讯 Alluxio 加速下一代大数据业务落地.zip

    这时,腾讯选择了Alluxio作为中间层存储系统,来解决这一问题。 Alluxio,原名Tachyon,是介于持久化存储(如HDFS)和计算层(如Spark)之间的一层内存级的虚拟文件系统。它提供了一种缓存机制,能够将常用数据驻留...

    腾讯云性能测试操作指导1

    在本文档中,我们将深入探讨腾讯云的性能测试流程,主要关注如何操作腾讯云平台以进行性能测试,尤其是集群管理和存储挂载管理方面。对于初次使用腾讯云Portal的用户,这个指南将加速对平台的熟悉过程,同时也为测试...

    腾讯面试经验,腾讯面经

    另外,腾讯的产品培训生计划是一个旨在选拔并培养优秀毕业生进入公司并为其提供快速成长路径的项目。通过这一计划,腾讯期望将年轻的人才培养成未来的互联网产品经理。 求职者在准备面试时,除了要熟悉腾讯的业务和...

    腾讯WiFi腾讯随身WiFi win10/win11驱动

    腾讯WiFi 适用于win10的驱动。 腾讯随身WiFi,是个一个很老的USB设备了。现在官网主页已经打不开了。无意间翻出来这个设备,插上去还能用,但不是免驱了。找了很多网上的驱动都不能用在win10和win11上,安装提示“不...

    腾讯通企业集群实施细则

    《腾讯通企业集群实施细则》是关于构建和管理腾讯通(RTX)集群的重要文档,旨在帮助企业用户实现多个腾讯通服务器的高效整合与资源共享。通过集群技术,企业可以提高服务的可用性和性能,确保组织信息的稳定传递和...

    腾讯社交帝国的死里逃生和未知恐惧(转载)

    【标题】:“腾讯社交帝国的死里逃生和未知恐惧(转载)”这篇文章主要探讨了腾讯在社交领域的崛起、挑战以及面对未知竞争时的战略调整。腾讯作为中国乃至全球领先的互联网巨头,其社交产品矩阵以微信、QQ等为核心,...

    腾讯云-云数据库Hbase介绍

    5. 弹性扩展性:系统能够根据业务需求动态调整,实现节点的快速扩缩容,保障服务不间断地对外提供服务。 应用场景方面,腾讯云数据库HBase特别适用于大规模数据存储和处理的场景,比如: 1. 构建海量数据存储系统...

    腾讯广告产品手册.pdf

    腾讯广告产品手册.pdf 腾讯广告产品手册.pdf是腾讯公司推出的广告产品解决方案手册,旨在帮助广告商和媒体购买者更好地了解和使用腾讯的广告产品。下面是该手册中的一些重要知识点: 一、腾讯广告产品介绍 腾讯...

    腾讯图床API源码.rar

    腾讯图床API源码是一个用于图片托管的解决方案,它允许用户将图片上传到腾讯的服务器上,从而节省自己的存储空间并利用腾讯的CDN(内容分发网络)进行加速。这个API服务对于需要大量存储和快速加载图片的网站或者...

    腾讯传1998-2016 pdf

    4. **竞争与合作**:书中揭示了腾讯在与网易、百度、阿里巴巴等竞争对手的较量中,如何找到自己的定位和竞争优势。 5. **企业文化和价值观**:腾讯的企业文化,如“一切以用户价值为依归”的理念,是如何塑造公司...

    腾讯C++编码规范

    ### 腾讯C++编码规范解读 #### 1. 概述 腾讯C++编码规范是一套由腾讯集团制定的、旨在规范公司内部C++编程风格的标准文档。该规范首次发布于2007年10月25日,目的在于确保所有使用C和C++语言开发的产品具有统一的...

Global site tag (gtag.js) - Google Analytics