校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 算法 > 链表算法
题目

找出单链表的中间元素,要求用时最少

解答

思路

1、最简单实现,先遍历一遍链表,取得长度n;再遍历一遍,取n/2的位置的结点

2、要求用时最少,能不能减少为遍历1次?

3、如果有两个指针都从头遍历,一个一次跑一步,一个跑两步。快的跑完了,慢的不就在中间

4、这是一种题型,需要了解这种思路

代码

Node  findMiddle(Node  head)
{
If(head == null || head.next == null)
{
return head;//偶数返回中间靠前结点
}
 Node slow  = head;  
Node fast = head;
     while( fast.next != null  && fast.next.next != null )  
      {  
         fast = fast.next.next;  
         slow = slow.next;  
     }  
     return slow;
}


C 5条回复 评论
冰冻三尺

收藏不息,战斗不止

发表于 2022-01-27 22:00:00
0 0
期待

快慢指针,快指针是慢指针移动速度的两倍

发表于 2021-03-29 09:57:46
0 0
假期

两个指针,一个一步,一个两步

发表于 2021-01-21 22:58:09
0 0
刘帅

啊,不太会这到题目。

发表于 2021-01-21 11:21:10
0 0
丹丹小小涛

快慢指针 经典题勒

发表于 2021-01-21 11:02:58
0 0