链表查找中间节点两种方法的对比

最近在刷算法题目,发现链表查找中间节点有两种方法。

第一种方法如下:

ListNode* slow=head;
ListNode* fast=head->next;
while(fast && fast->next){
    slow=slow->next;
    fast=fast->next;
    fast=fast->next;
 }

第二种方法如下:

ListNode* slow=head;
ListNode* fast=head;
while(fast->next && fast->next->next){
    slow=slow->next;
    fast=fast->next;
    fast=fast->next;
}

开始感觉有点蒙,后来经过对比发现,两者区别在于:对于有奇数个节点的链表,前者方法后半部分节点比前半部分多一个,后者方法则是前半部分节点比后半部分多一个。

 

posted @ 2020-06-01 09:40  雍阳怪侠  阅读(452)  评论(0)    收藏  举报