单链表之查找单链表的中间结点
2015-10-19 13:08
316 查看
查找单链表的中间结点:
/** * 此题可应用于上一题类似的思想。也是设置两个指针,只不过这里是, 定义快慢两个指针,同时从头开始遍历,快指针每次走两步,慢指针每次走一步, * 快指针走到最后一个结点时,慢指针所指结点就是中间结点,即第(n/2+1)个结点。 注意链表为空,链表结点个数为1和2的情况。时间复杂度O(n */ public static Node getMiddleNode(Node head) { if (head == null || head.next == null) { return head; } Node slow = head; // Node fast = head; // 前面指针每次走两步,直到指向最后一个结点,后面指针每次走一步 while (fast.next != null) { // 先走fast,再走slow,再走fast,严格顺序!!! fast = fast.next; slow = slow.next; if (fast.next != null) { fast = fast.next; } } // 循环结束,fast.next == null,是最后一个节点 return slow; }
相关文章推荐
- C++第八课 局部变量和全局变量
- iOS: TableView如何刷新指定的cell 或section
- 机器学习(八)前馈神经网络
- ajax上传图片,仿ajaxFileUpload,解决出错和兼容问题
- OSG节点访问、更新和回调
- The difference between Union & Union All in SQL Server/pOSTGRESQL
- 单链表之从尾到头打印单链表
- Mybatis系列之实战篇(上)
- HIVE分析窗口函数:NTILE,ROW_NUMBER,RANK,DENSE_RANK
- jstack和线程dump分析
- ORACLE 11gR2 DG(Physical Standby)日常维护01
- [No000027]博客园好在哪里?-教您用Word 2013来写博客
- unity, 烘焙lightmap
- Mysql学习笔记
- [Android] 环境配置之Android Studio开发NDK
- MBProgressHUD
- django 画图
- 磁盘达到99%的原因和解决方案
- 黑马程序员——Java接口、类以及继承、实现
- 最小生成树-(贪心思想)