试题
考点

算法-链表算法-链表算法

面5笔5

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

前往“校招VIP”小程序,刷题更快
最新校招难题刷题,快来进刷题群吧
解答

思路

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;
}


评论

Bunny

2025-01-26 21:00:00

0 0

冰冻三尺

2022-01-27 22:00:00

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

加载更多