之前的做法是双指针都指向head, 然后一个走一步一个走两步这样。这种做法对于偶数个结点,得到的中间结点是中间两个后面的一个,特别的,对于2个结点的,得到的是后面那个结点是中间结点。在分拆时一般mid 作为前半部分的最后一个结点,mid->next作为后半部分的起点。这样2个结点时,分拆后的第一个链表和原链表一样,第二个链表是空。这样就没有reduce,递归无法收敛或者死循环。
更新:
初始化为:p 指向head, q 指向第二个结点。然后再一个走一步,一个走两步。这样偶数情况下得到的中点是中间两个前面一个。
本文讨论了链表中寻找中间节点的不同方法,并强调了一种改进的双指针技术,该技术能够正确地将链表分为几乎相等的两部分,避免了递归分拆时出现死循环的问题。
960

被折叠的 条评论
为什么被折叠?



