解答
思路
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;
}
收藏不息,战斗不止
快慢指针,快指针是慢指针移动速度的两倍
两个指针,一个一步,一个两步
啊,不太会这到题目。
快慢指针 经典题勒