链表查找中间节点两种方法的对比
最近在刷算法题目,发现链表查找中间节点有两种方法。
第一种方法如下:
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;
}
开始感觉有点蒙,后来经过对比发现,两者区别在于:对于有奇数个节点的链表,前者方法后半部分节点比前半部分多一个,后者方法则是前半部分节点比后半部分多一个。
浙公网安备 33010602011771号